Issue 32935. Fix NPE in 'Make final' quick fix.
R=brianwilkerson@google.com, devoncarew@google.com
Bug: https://github.com/dart-lang/sdk/issues/32935
Change-Id: I980ffebe48050f7835664fa4d7d798c6f48e755c
Reviewed-on: https://dart-review.googlesource.com/53840
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 580e541..5453c62 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -2198,10 +2198,10 @@
if (list.variables.length == 1) {
DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
- if (list.type == null && list.keyword.keyword == Keyword.VAR) {
+ if (list.keyword == null) {
+ builder.addSimpleInsertion(list.offset, 'final ');
+ } else if (list.keyword.keyword == Keyword.VAR) {
builder.addSimpleReplacement(range.token(list.keyword), 'final');
- } else if (list.type != null && list.keyword == null) {
- builder.addSimpleInsertion(list.type.offset, 'final ');
}
});
_addFixFromBuilder(changeBuilder, DartFixKind.MAKE_FINAL);
diff --git a/pkg/analysis_server/test/services/correction/fix_test.dart b/pkg/analysis_server/test/services/correction/fix_test.dart
index 426ff09..0e949bf 100644
--- a/pkg/analysis_server/test/services/correction/fix_test.dart
+++ b/pkg/analysis_server/test/services/correction/fix_test.dart
@@ -6493,6 +6493,23 @@
''');
}
+ test_makeFieldFinal_noKeyword() async {
+ String src = '''
+class C {
+ /*LINT*/f = 2;
+}
+''';
+ await findLint(src, LintNames.prefer_final_fields);
+
+ await applyFix(DartFixKind.MAKE_FINAL);
+
+ verifyResult('''
+class C {
+ final f = 2;
+}
+''');
+ }
+
test_makeFieldFinal_type() async {
String src = '''
class C {