@@ -6,6 +6,7 @@ import 'package:analysis_server/src/services/correction/dart/abstract_producer.d
6
6
import 'package:analysis_server/src/services/correction/fix.dart' ;
7
7
import 'package:analyzer/dart/ast/ast.dart' ;
8
8
import 'package:analyzer/dart/ast/token.dart' ;
9
+ import 'package:analyzer/source/source_range.dart' ;
9
10
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
10
11
import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
11
12
import 'package:analyzer_plugin/utilities/range_factory.dart' ;
@@ -37,6 +38,7 @@ class ConvertToContains extends CorrectionProducer {
37
38
return ;
38
39
}
39
40
var methodName = leftOperand.methodName;
41
+ var startArgumentRange = _startArgumentRange (leftOperand);
40
42
var deletionRange = range.endEnd (leftOperand, rightOperand);
41
43
var notOffset = - 1 ;
42
44
var style = _negationStyle (comparison.operator .type, value);
@@ -51,6 +53,9 @@ class ConvertToContains extends CorrectionProducer {
51
53
builder.addSimpleInsertion (notOffset, '!' );
52
54
}
53
55
builder.addSimpleReplacement (range.node (methodName), 'contains' );
56
+ if (startArgumentRange != null ) {
57
+ builder.addDeletion (startArgumentRange);
58
+ }
54
59
builder.addDeletion (deletionRange);
55
60
});
56
61
} else if (_isInteger (leftOperand) && rightOperand is MethodInvocation ) {
@@ -59,6 +64,7 @@ class ConvertToContains extends CorrectionProducer {
59
64
return ;
60
65
}
61
66
var methodName = rightOperand.methodName;
67
+ var startArgumentRange = _startArgumentRange (rightOperand);
62
68
var deletionRange = range.startStart (leftOperand, rightOperand);
63
69
var notOffset = - 1 ;
64
70
var style =
@@ -75,6 +81,9 @@ class ConvertToContains extends CorrectionProducer {
75
81
builder.addSimpleInsertion (notOffset, '!' );
76
82
}
77
83
builder.addSimpleReplacement (range.node (methodName), 'contains' );
84
+ if (startArgumentRange != null ) {
85
+ builder.addDeletion (startArgumentRange);
86
+ }
78
87
});
79
88
}
80
89
}
@@ -156,6 +165,16 @@ class ConvertToContains extends CorrectionProducer {
156
165
// so we should never reach this point.
157
166
return NegationStyle .none;
158
167
}
168
+
169
+ SourceRange ? _startArgumentRange (MethodInvocation invocation) {
170
+ var arguments = invocation.argumentList.arguments;
171
+ if (arguments.length == 2 ) {
172
+ var firstArgument = arguments[0 ];
173
+ var secondArgument = arguments[1 ];
174
+ return range.endEnd (firstArgument, secondArgument);
175
+ }
176
+ return null ;
177
+ }
159
178
}
160
179
161
180
/// An indication of whether the `contains` test should be negated, not negated,
0 commit comments