Skip to content

Commit 21ce992

Browse files
kallentuCommit Queue
authored andcommitted
[analysis_server][analyzer] Convert unused declared var patterns to wildcards.
Convert to wildcard variable wasn't triggering for declared variable patterns, this CL makes it so that we do have that fix. ```dart var (a) = (0); // New fix: convert to wildcard variable ``` Bug: #60082 Change-Id: Ic09219809a9a0fc01b9ab773f58fd815da4a613f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/411087 Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Kallen Tu <[email protected]>
1 parent af68c2d commit 21ce992

File tree

2 files changed

+74
-13
lines changed

2 files changed

+74
-13
lines changed

pkg/analysis_server/lib/src/services/correction/dart/convert_to_wildcard_variable.dart

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import 'package:analysis_server/src/services/correction/fix.dart';
66
import 'package:analysis_server/src/services/correction/util.dart';
77
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
88
import 'package:analyzer/dart/analysis/features.dart';
9-
import 'package:analyzer/dart/ast/ast.dart';
9+
import 'package:analyzer/dart/ast/token.dart';
1010
import 'package:analyzer/dart/element/element2.dart';
11+
import 'package:analyzer/src/dart/ast/ast.dart';
1112
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
1213
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
1314
import 'package:analyzer_plugin/utilities/range_factory.dart';
@@ -32,7 +33,13 @@ class ConvertToWildcardVariable extends ResolvedCorrectionProducer {
3233
var node = this.node;
3334

3435
if (node is FormalParameter) {
35-
await computeFormalParameterConversion(builder, node);
36+
await computeVariableConversion(builder, node.name!);
37+
return;
38+
}
39+
40+
if (node is DeclaredVariablePatternImpl &&
41+
node.fieldNameWithImplicitName == null) {
42+
await computeVariableConversion(builder, node.name);
3643
return;
3744
}
3845

@@ -62,12 +69,12 @@ class ConvertToWildcardVariable extends ResolvedCorrectionProducer {
6269
});
6370
}
6471

65-
Future<void> computeFormalParameterConversion(
72+
Future<void> computeVariableConversion(
6673
ChangeBuilder builder,
67-
FormalParameter node,
74+
Token name,
6875
) async {
6976
await builder.addDartFileEdit(file, (builder) {
70-
builder.addSimpleReplacement(range.token(node.name!), '_');
77+
builder.addSimpleReplacement(range.token(name), '_');
7178
});
7279
}
7380
}

pkg/analysis_server/test/src/services/correction/fix/convert_to_wildcard_variable_test.dart

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ConvertToWildcardVariableTest extends FixProcessorTest {
2121
@override
2222
FixKind get kind => DartFixKind.CONVERT_TO_WILDCARD_VARIABLE;
2323

24-
Future<void> test_convertUnusedLocalVariable() async {
24+
Future<void> test_basic() async {
2525
await resolveTestCode('''
2626
void f() {
2727
var x = '';
@@ -34,7 +34,7 @@ void f() {
3434
''');
3535
}
3636

37-
Future<void> test_convertUnusedLocalVariable_list() async {
37+
Future<void> test_list() async {
3838
await resolveTestCode('''
3939
void f() {
4040
int? x, y;
@@ -49,7 +49,7 @@ void f() {
4949
''');
5050
}
5151

52-
Future<void> test_convertUnusedLocalVariable_listPatternAssignment() async {
52+
Future<void> test_listPatternAssignment() async {
5353
await resolveTestCode('''
5454
void f() {
5555
var x = 0;
@@ -64,7 +64,7 @@ void f() {
6464
''');
6565
}
6666

67-
Future<void> test_convertUnusedLocalVariable_preWildcards() async {
67+
Future<void> test_preWildcards() async {
6868
await resolveTestCode('''
6969
// @dart = 3.4
7070
// (pre wildcard-variables)
@@ -76,7 +76,7 @@ void f() {
7676
await assertNoFix();
7777
}
7878

79-
Future<void> test_convertUnusedLocalVariable_recordAssignment() async {
79+
Future<void> test_recordAssignment() async {
8080
await resolveTestCode('''
8181
void f() {
8282
var x = 0;
@@ -91,8 +91,7 @@ void f() {
9191
''');
9292
}
9393

94-
Future<void>
95-
test_convertUnusedLocalVariable_recordAssignment_parenthesized() async {
94+
Future<void> test_recordAssignment_parenthesized() async {
9695
await resolveTestCode('''
9796
void f() {
9897
var x = 0;
@@ -107,7 +106,62 @@ void f() {
107106
''');
108107
}
109108

110-
Future<void> test_convertUnusedLocalVariable_reference() async {
109+
Future<void> test_recordDestructure() async {
110+
await resolveTestCode('''
111+
void f() {
112+
var (a) = (0);
113+
}
114+
''');
115+
await assertHasFix('''
116+
void f() {
117+
var (_) = (0);
118+
}
119+
''');
120+
}
121+
122+
Future<void> test_recordDestructure_implicitName() async {
123+
await resolveTestCode('''
124+
void f() {
125+
var (:a) = (a: "x");
126+
}
127+
''');
128+
await assertNoFix();
129+
}
130+
131+
Future<void> test_recordDestructure_implicitName_multiple() async {
132+
await resolveTestCode('''
133+
void f() {
134+
var (:a, _) = (a: "x", 1);
135+
}
136+
''');
137+
await assertNoFix();
138+
}
139+
140+
Future<void> test_recordDestructure_multiple() async {
141+
await resolveTestCode('''
142+
void f() {
143+
var (a, _) = (0, 1);
144+
}
145+
''');
146+
await assertHasFix('''
147+
void f() {
148+
var (_, _) = (0, 1);
149+
}
150+
''');
151+
}
152+
153+
Future<void> test_recordDestructure_preWildcards() async {
154+
await resolveTestCode('''
155+
// @dart = 3.4
156+
// (pre wildcard-variables)
157+
void f() {
158+
var (a) = (0);
159+
}
160+
''');
161+
await assertNoFix();
162+
}
163+
164+
Future<void> test_reference() async {
111165
await resolveTestCode('''
112166
void f() {
113167
var x = '';

0 commit comments

Comments
 (0)