Chromium Code Reviews| Index: pkg/analyzer/test/generated/resolver_test.dart |
| diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart |
| index 8654a3a1c06bad207a47b7ee3d3d44e3ef84f1f1..61f8cc99ef9784162c032cde5ac5bce6b1956956 100644 |
| --- a/pkg/analyzer/test/generated/resolver_test.dart |
| +++ b/pkg/analyzer/test/generated/resolver_test.dart |
| @@ -3829,6 +3829,173 @@ print(x) {}'''); |
| verify([source]); |
| } |
| + void test_unusedField_notUsed_noReference() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| +} |
| +'''); |
| + resolve(source); |
| + assertErrors(source, [HintCode.UNUSED_FIELD]); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_notUsed_simpleAssignment() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| + m() { |
| + _f = 1; |
| + } |
| +} |
| +main(A a) { |
| + a._f = 2; |
| +} |
| +'''); |
| + resolve(source); |
| + assertErrors(source, [HintCode.UNUSED_FIELD]); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_notUsed_compoundAssign() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| + main() { |
| + _f += 2; |
| + } |
| +}'''); |
| + resolve(source); |
| + assertErrors(source, [HintCode.UNUSED_FIELD]); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_notUsed_postfixExpr() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f = 0; |
| + main() { |
| + _f++; |
| + } |
| +}'''); |
| + resolve(source); |
| + assertErrors(source, [HintCode.UNUSED_FIELD]); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_notUsed_prefixExpr() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f = 0; |
| + main() { |
| + ++_f; |
| + } |
| +}'''); |
| + resolve(source); |
| + assertErrors(source, [HintCode.UNUSED_FIELD]); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_argument() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f = 0; |
| + main() { |
| + print(++_f); |
| + } |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_reference_implicitThis() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| + main() { |
| + print(_f); |
| + } |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_reference_implicitThis_subclass() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| + main() { |
| + print(_f); |
| + } |
| +} |
| +class B extends A { |
| + int _f; |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_reference_qualified_staticElement() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| +} |
| +main() { |
| + A a = new A(); |
| + print(a._f); |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_reference_qualified_propagatedElement() { |
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| +} |
| +main() { |
| + var a = new A(); |
| + print(a._f); |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| + void test_unusedField_isUsed_reference_qualified_unresolved() { |
|
Brian Wilkerson
2014/11/13 21:54:49
Perhaps a test like:
class A {
int _f;
int m(
scheglov
2014/11/13 23:13:16
Done.
|
| + enableUnusedElement = true; |
| + Source source = addSource(r''' |
| +class A { |
| + int _f; |
| +} |
| +main(a) { |
| + print(a._f); |
| +} |
| +print(x) {}'''); |
| + resolve(source); |
| + assertErrors(source); |
| + verify([source]); |
| + } |
| + |
| void test_useOfVoidResult_assignmentExpression_function() { |
| Source source = addSource(r''' |
| void f() {} |
| @@ -6824,7 +6991,8 @@ class ResolverTestCase extends EngineTestCase { |
| AnalysisContextImpl analysisContext2; |
| /** |
| - * Specifies if [assertErrors] should check for [HintCode.UNUSED_ELEMENT]. |
| + * Specifies if [assertErrors] should check for [HintCode.UNUSED_ELEMENT] and |
| + * [HintCode.UNUSED_FIELD]. |
| */ |
| bool enableUnusedElement = false; |
| @@ -6875,12 +7043,13 @@ class ResolverTestCase extends EngineTestCase { |
| void assertErrors(Source source, [List<ErrorCode> expectedErrorCodes = ErrorCode.EMPTY_LIST]) { |
| GatheringErrorListener errorListener = new GatheringErrorListener(); |
| for (AnalysisError error in analysisContext2.computeErrors(source)) { |
| - if (error.errorCode == HintCode.UNUSED_ELEMENT && |
| - !enableUnusedElement) { |
| + ErrorCode errorCode = error.errorCode; |
| + if (!enableUnusedElement && |
| + (errorCode == HintCode.UNUSED_ELEMENT || errorCode == HintCode.UNUSED_FIELD)) { |
| continue; |
| } |
| - if (error.errorCode == HintCode.UNUSED_LOCAL_VARIABLE && |
| - !enableUnusedLocalVariable) { |
| + if (!enableUnusedLocalVariable && |
| + errorCode == HintCode.UNUSED_LOCAL_VARIABLE) { |
| continue; |
| } |
| errorListener.onError(error); |