@@ -6,6 +6,7 @@ import 'package:_fe_analyzer_shared/src/scanner/token.dart';
66import 'package:analysis_server/src/services/correction/assist.dart' ;
77import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart' ;
88import 'package:analyzer/dart/ast/ast.dart' ;
9+ import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart' ;
910import 'package:analyzer_plugin/utilities/assist/assist.dart' ;
1011import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
1112import 'package:analyzer_plugin/utilities/range_factory.dart' ;
@@ -50,22 +51,34 @@ class SplitVariableDeclaration extends CorrectionProducer {
5051 return ;
5152 }
5253
53- await builder.addDartFileEdit (file, (builder) {
54- if (variableList.type == null ) {
55- final type = variable.declaredElement! .type;
56- if (! type.isDynamic && keyword != null ) {
57- builder.addReplacement (range.token (keyword), (builder) {
58- builder.writeType (type);
59- });
54+ Future <bool > tryToApplyChange (ChangeBuilder builder) async {
55+ var validChange = true ;
56+ await builder.addDartFileEdit (file, (builder) {
57+ if (variableList.type == null ) {
58+ final type = variable.declaredElement! .type;
59+ if (! type.isDynamic && keyword != null ) {
60+ builder.addReplacement (range.token (keyword), (builder) {
61+ validChange = builder.writeType (type);
62+ });
63+ }
6064 }
61- }
6265
63- var indent = utils.getNodePrefix (statement);
64- var name = variable.name.name;
65- builder.addSimpleInsertion (variable.name.end, ';' + eol + indent + name);
66- });
66+ var indent = utils.getNodePrefix (statement);
67+ var name = variable.name.name;
68+ builder.addSimpleInsertion (
69+ variable.name.end, ';' + eol + indent + name);
70+ });
71+ return validChange;
72+ }
73+
74+ if (await tryToApplyChange (_temporaryBuilder (builder))) {
75+ await tryToApplyChange (builder);
76+ }
6777 }
6878
79+ ChangeBuilder _temporaryBuilder (ChangeBuilder builder) =>
80+ ChangeBuilder (workspace: (builder as ChangeBuilderImpl ).workspace);
81+
6982 /// Return an instance of this class. Used as a tear-off in `AssistProcessor` .
7083 static SplitVariableDeclaration newInstance () => SplitVariableDeclaration ();
7184}
0 commit comments