pattern variable declaration support for `remove_leading_underscores`
Fixes: https://github.com/dart-lang/sdk/issues/51867
Change-Id: Id956d97eee418dfeed2ea62aa0779b9f06ac600b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291361
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart
index 9bc435d..4122d98 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart
@@ -39,6 +39,9 @@
} else if (node is VariableDeclaration) {
nameToken = node.name;
element = node.declaredElement;
+ } else if (node is DeclaredVariablePattern) {
+ nameToken = node.name;
+ element = node.declaredElement;
} else {
return;
}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_leading_underscore_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_leading_underscore_test.dart
index 4a809b0..92ca7f3 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_leading_underscore_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_leading_underscore_test.dart
@@ -74,6 +74,21 @@
@override
String get lintCode => LintNames.no_leading_underscores_for_local_identifiers;
+ Future<void> test_listPatternAssignment() async {
+ await resolveTestCode(r'''
+f() {
+ var [_a] = [1];
+ print(_a);
+}
+''');
+ await assertHasFix(r'''
+f() {
+ var [a] = [1];
+ print(a);
+}
+''');
+ }
+
Future<void> test_localVariable() async {
await resolveTestCode('''
void f() {
@@ -152,6 +167,29 @@
''');
}
+ Future<void> test_objectPatternAssignment() async {
+ await resolveTestCode(r'''
+class A {
+ int a;
+ A(this.a);
+}
+f() {
+ final A(a: int _b) = A(1);
+ print(_b);
+}
+''');
+ await assertHasFix(r'''
+class A {
+ int a;
+ A(this.a);
+}
+f() {
+ final A(a: int b) = A(1);
+ print(b);
+}
+''');
+ }
+
Future<void> test_parameter_closure() async {
await resolveTestCode('''
void f() {
@@ -220,4 +258,19 @@
}
''');
}
+
+ Future<void> test_recordPatternAssignment() async {
+ await resolveTestCode(r'''
+f() {
+ var (_a, b) = (1, 2);
+ print('$_a$b');
+}
+''');
+ await assertHasFix(r'''
+f() {
+ var (a, b) = (1, 2);
+ print('$a$b');
+}
+''');
+ }
}