@@ -6,6 +6,7 @@ import 'package:_fe_analyzer_shared/src/scanner/token.dart';
6
6
import 'package:analysis_server/src/services/correction/assist.dart' ;
7
7
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart' ;
8
8
import 'package:analyzer/dart/ast/ast.dart' ;
9
+ import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart' ;
9
10
import 'package:analyzer_plugin/utilities/assist/assist.dart' ;
10
11
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
11
12
import 'package:analyzer_plugin/utilities/range_factory.dart' ;
@@ -50,22 +51,34 @@ class SplitVariableDeclaration extends CorrectionProducer {
50
51
return ;
51
52
}
52
53
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
+ }
60
64
}
61
- }
62
65
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
+ }
67
77
}
68
78
79
+ ChangeBuilder _temporaryBuilder (ChangeBuilder builder) =>
80
+ ChangeBuilder (workspace: (builder as ChangeBuilderImpl ).workspace);
81
+
69
82
/// Return an instance of this class. Used as a tear-off in `AssistProcessor` .
70
83
static SplitVariableDeclaration newInstance () => SplitVariableDeclaration ();
71
84
}
0 commit comments