Version 2.11.0-185.0.dev
Merge commit '090166c79d65c8b9c58a9651f7056c1b380d0442' into 'dev'
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 558ee7d..931cf38 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -630,11 +630,21 @@
);
} else if (node is SimpleIdentifier) {
var resolver = PropertyElementResolver(this);
- return resolver.resolveSimpleIdentifier(
+ var result = resolver.resolveSimpleIdentifier(
node: node,
hasRead: hasRead,
hasWrite: true,
);
+
+ if (hasRead && result.readElementRequested == null) {
+ errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.UNDEFINED_IDENTIFIER,
+ node,
+ [node.name],
+ );
+ }
+
+ return result;
} else {
node.accept(this);
return PropertyElementResolverResult();
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index a173cf5..ef3ec65 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -28,6 +28,28 @@
]);
}
+ test_compoundAssignment_noGetter_hasSetter() async {
+ await assertErrorsInCode('''
+set foo(int _) {}
+
+void f() {
+ foo += 0;
+}
+''', [
+ error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 32, 3),
+ ]);
+ }
+
+ test_compoundAssignment_noGetter_noSetter() async {
+ await assertErrorsInCode('''
+void f() {
+ foo += 0;
+}
+''', [
+ error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 13, 3),
+ ]);
+ }
+
test_for() async {
await assertErrorsInCode('''
f(var l) {
@@ -126,6 +148,30 @@
]);
}
+ test_postfixExpression_increment_noGetter_hasSetter() async {
+ await assertErrorsInCode('''
+set foo(int _) {}
+
+void f() {
+ foo++;
+}
+''', [
+ error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 32, 3),
+ ]);
+ }
+
+ test_prefixExpression_increment_noGetter_hasSetter() async {
+ await assertErrorsInCode('''
+set foo(int _) {}
+
+void f() {
+ ++foo;
+}
+''', [
+ error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 34, 3),
+ ]);
+ }
+
test_private_getter() async {
newFile('$testPackageLibPath/lib.dart', content: '''
library lib;
diff --git a/tools/VERSION b/tools/VERSION
index c38dcce..30c4f2b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 11
PATCH 0
-PRERELEASE 184
+PRERELEASE 185
PRERELEASE_PATCH 0
\ No newline at end of file