Skip to content

Commit e8d4569

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Fix for ConflictingEditException in RemoveUnusedLocalVariable.
[email protected], [email protected] Change-Id: I5614e83b5b7dca720b5de09a5ee7fd457a13b2e1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179820 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 693b9f7 commit e8d4569

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ class RemoveUnusedLocalVariable extends CorrectionProducer {
5050
return;
5151
}
5252

53+
var isCovered = false;
54+
for (var other in sourceRanges) {
55+
if (other.covers(sourceRange)) {
56+
isCovered = true;
57+
} else if (other.intersects(sourceRange)) {
58+
return;
59+
}
60+
}
61+
62+
if (isCovered) {
63+
continue;
64+
}
65+
5366
sourceRanges.add(sourceRange);
5467
}
5568

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,21 @@ class RemoveUnusedLocalVariableTest extends FixProcessorTest {
2020
@override
2121
FixKind get kind => DartFixKind.REMOVE_UNUSED_LOCAL_VARIABLE;
2222

23+
Future<void> test_assignmentInAssignment() async {
24+
await resolveTestCode(r'''
25+
main() {
26+
var v = 1;
27+
v = (v = 2);
28+
print(0);
29+
}
30+
''');
31+
await assertHasFix(r'''
32+
main() {
33+
print(0);
34+
}
35+
''');
36+
}
37+
2338
Future<void> test_inArgumentList() async {
2439
await resolveTestCode(r'''
2540
main() {

0 commit comments

Comments
 (0)