Test analyzer/FE integration of some more obscure invalid assignment cases.
This CL tests proper handling of the following erroneous assignments:
- Compound assignment to prefix increment (e.g. "++x += y;")
- Null aware assignment to prefix increment (e.g. "++x ??= y;")
Change-Id: I090ba2dacd754372674276b9fea3945588f3a731
Reviewed-on: https://dart-review.googlesource.com/71360
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index ac3b708..aa48539 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -1020,6 +1020,38 @@
assertElement(yRef, findElement.parameter('y'));
}
+ test_assign_to_prefix_increment_compound() async {
+ addTestFile('''
+void f(num x, int y) {
+ ++x += y;
+}
+''');
+ await resolveTestFile();
+
+ var xRef = findNode.simple('x +=');
+ assertType(xRef, 'num');
+ assertElement(xRef, findElement.parameter('x'));
+ var yRef = findNode.simple('y;');
+ assertType(yRef, 'int');
+ assertElement(yRef, findElement.parameter('y'));
+ }
+
+ test_assign_to_prefix_increment_null_aware() async {
+ addTestFile('''
+void f(num x, int y) {
+ ++x ??= y;
+}
+''');
+ await resolveTestFile();
+
+ var xRef = findNode.simple('x ??=');
+ assertType(xRef, 'num');
+ assertElement(xRef, findElement.parameter('x'));
+ var yRef = findNode.simple('y;');
+ assertType(yRef, 'int');
+ assertElement(yRef, findElement.parameter('y'));
+ }
+
test_assign_with_synthetic_lhs() async {
addTestFile('''
void f(int x) {