mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:42:11 +00:00
DevX. Issue 54497. DeclaredVariablePattern in ForEachPartsWithPattern to final.
Bug: https://github.com/dart-lang/sdk/issues/54497 Change-Id: Ifa195d29a1a4db47fa12c221e6969ed0d8578a72 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/371162 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
3d3016ecfa
commit
4e8af3bb56
|
@ -4,8 +4,8 @@
|
|||
|
||||
import 'package:analysis_server/src/services/correction/fix.dart';
|
||||
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/token.dart';
|
||||
import 'package:analyzer/src/dart/ast/ast.dart';
|
||||
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
|
||||
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
|
||||
import 'package:analyzer_plugin/utilities/range_factory.dart';
|
||||
|
@ -83,16 +83,26 @@ class MakeFinal extends ResolvedCorrectionProducer {
|
|||
return;
|
||||
}
|
||||
|
||||
if (node is DeclaredVariablePattern) {
|
||||
var keyword = node.keyword;
|
||||
if (keyword == null) {
|
||||
await builder.addDartFileEdit(file, (builder) {
|
||||
builder.addSimpleInsertion(node.offset, 'final ');
|
||||
});
|
||||
} else if (node.type == null) {
|
||||
await builder.addDartFileEdit(file, (builder) {
|
||||
builder.addSimpleReplacement(range.token(keyword), 'final');
|
||||
});
|
||||
if (node is DeclaredVariablePatternImpl) {
|
||||
switch (node.patternContext) {
|
||||
case ForEachPartsWithPatternImpl patternContext:
|
||||
await builder.addDartFileEdit(file, (builder) {
|
||||
builder.addSimpleReplacement(
|
||||
range.token(patternContext.keyword),
|
||||
'final',
|
||||
);
|
||||
});
|
||||
default:
|
||||
var keyword = node.keyword;
|
||||
if (keyword == null) {
|
||||
await builder.addDartFileEdit(file, (builder) {
|
||||
builder.addSimpleInsertion(node.offset, 'final ');
|
||||
});
|
||||
} else if (node.type == null) {
|
||||
await builder.addDartFileEdit(file, (builder) {
|
||||
builder.addSimpleReplacement(range.token(keyword), 'final');
|
||||
});
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -287,6 +287,19 @@ class PreferFinalLocalsBulkTest extends BulkFixProcessorTest {
|
|||
@override
|
||||
String get lintCode => LintNames.prefer_final_locals;
|
||||
|
||||
Future<void> test_recordPattern_forLoop() async {
|
||||
await resolveTestCode('''
|
||||
void f() {
|
||||
for (var (a, b) in [(0, 1)]) {}
|
||||
}
|
||||
''');
|
||||
await assertHasFix('''
|
||||
void f() {
|
||||
for (final (a, b) in [(0, 1)]) {}
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
Future<void> test_singleFile() async {
|
||||
await resolveTestCode('''
|
||||
f() {
|
||||
|
@ -404,17 +417,15 @@ List<(int, int)> g((int, int) Function() f) {
|
|||
|
||||
Future<void> test_recordPattern_forLoop() async {
|
||||
await resolveTestCode(r'''
|
||||
f() {
|
||||
for (var (a) in [(1)]) {
|
||||
print('$a');
|
||||
}
|
||||
void f() {
|
||||
// ignore:unused_local_variable
|
||||
for (var (a,) in [(0,)]) {}
|
||||
}
|
||||
''');
|
||||
await assertHasFix(r'''
|
||||
f() {
|
||||
for (final (a) in [(1)]) {
|
||||
print('$a');
|
||||
}
|
||||
void f() {
|
||||
// ignore:unused_local_variable
|
||||
for (final (a,) in [(0,)]) {}
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue