File tree Expand file tree Collapse file tree 2 files changed +32
-5
lines changed
lib/src/services/correction/dart
test/src/services/correction/fix Expand file tree Collapse file tree 2 files changed +32
-5
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import 'package:analyzer/dart/element/element.dart';
99import 'package:analyzer/src/generated/error_verifier.dart' ;
1010import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
1111import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
12+ import 'package:collection/collection.dart' ;
1213
1314/// The boolean value indicates whether the field is required.
1415/// The string value is the field/parameter name.
@@ -49,11 +50,16 @@ class AddFieldFormalParameters extends ResolvedCorrectionProducer {
4950 }
5051
5152 // Compute uninitialized final fields.
52- var fields = ErrorVerifier .computeNotInitializedFields (constructor);
53- fields.retainWhere ((FieldElement field) => field.isFinal);
54- fields.sort (
55- (a, b) => a.firstFragment.nameOffset! - b.firstFragment.nameOffset! ,
56- );
53+ var fields = ErrorVerifier .computeNotInitializedFields (constructor)
54+ .where ((field) => field.isFinal)
55+ .map ((field) {
56+ var nameOffset = field.firstFragment.nameOffset;
57+ return nameOffset != null ? (field, nameOffset) : null ;
58+ })
59+ .nonNulls
60+ .sortedBy ((pair) => pair.$2)
61+ .map ((pair) => pair.$1)
62+ .toList ();
5763
5864 // Prepare the last required parameter.
5965 FormalParameter ? lastRequiredParameter;
Original file line number Diff line number Diff line change 33// BSD-style license that can be found in the LICENSE file.
44
55import 'package:analysis_server/src/services/correction/fix.dart' ;
6+ import 'package:analyzer/src/error/codes.dart' ;
67import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
78import 'package:linter/src/lint_names.dart' ;
89import 'package:test_reflective_loader/test_reflective_loader.dart' ;
@@ -370,4 +371,24 @@ class Test {
370371}
371372''' );
372373 }
374+
375+ Future <void > test_synthetic_field () async {
376+ await resolveTestCode ('''
377+ class Test {
378+ final int foo,;
379+ Test();
380+ }
381+ ''' );
382+ await assertHasFix (
383+ '''
384+ class Test {
385+ final int foo,;
386+ Test(this.foo);
387+ }
388+ ''' ,
389+ filter: (diagnostic) =>
390+ diagnostic.diagnosticCode ==
391+ CompileTimeErrorCode .finalNotInitializedConstructor1,
392+ );
393+ }
373394}
You can’t perform that action at this time.
0 commit comments