Index: pkg/analysis_server/lib/src/services/correction/fix_internal.dart |
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 7b576c11ecec0f0505c4f1f54ff987554e5b63a1..1c0d97953c6b259c4c29847df19edbca9219e88b 100644 |
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart |
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart |
@@ -106,7 +106,6 @@ class FixProcessor { |
AnalysisDriver driver; |
String file; |
- int fileStamp; |
CompilationUnitElement unitElement; |
Source unitSource; |
LibraryElement unitLibraryElement; |
@@ -137,7 +136,6 @@ class FixProcessor { |
unitSource = unitElement.source; |
// file |
file = unitSource.fullName; |
- fileStamp = _modificationStamp(file); |
// library |
unitLibraryElement = unitElement.library; |
String unitLibraryPath = unitLibraryElement.source.fullName; |
@@ -173,12 +171,6 @@ class FixProcessor { |
} |
Future<List<Fix>> compute() async { |
- // If the source was changed between the constructor and running |
- // this asynchronous method, it is not safe to use the unit. |
- if (_modificationStamp(unitSource.fullName) != fileStamp) { |
- return const <Fix>[]; |
- } |
- |
try { |
utils = new CorrectionUtils(unit); |
} catch (e) { |
@@ -455,8 +447,7 @@ class FixProcessor { |
if (body != null && body.keyword == null) { |
TypeProvider typeProvider = await this.typeProvider; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.convertFunctionFromSyncToAsync(body, typeProvider); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.ADD_ASYNC); |
@@ -470,8 +461,7 @@ class FixProcessor { |
String prefix = utils.getIndent(1); |
String prefix2 = utils.getIndent(2); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
builder.selectHere(); |
builder.write(prefix); |
@@ -544,9 +534,8 @@ class FixProcessor { |
Source targetSource = targetElement.source; |
String targetFile = targetSource.fullName; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder |
- .addFileEdit(targetFile, targetSource.modificationStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, |
+ (DartFileEditBuilder builder) { |
builder.addInsertion(targetOffset, (DartEditBuilder builder) { |
if (numRequired != 0) { |
builder.write(', '); |
@@ -562,9 +551,8 @@ class FixProcessor { |
changeBuilder, DartFixKind.ADD_MISSING_PARAMETER_REQUIRED); |
if (optionalParameters.isEmpty) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder |
- .addFileEdit(targetFile, targetSource.modificationStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, |
+ (DartFileEditBuilder builder) { |
builder.addInsertion(targetOffset, (DartEditBuilder builder) { |
if (numRequired != 0) { |
builder.write(', '); |
@@ -614,8 +602,7 @@ class FixProcessor { |
int offset = |
args.isEmpty ? argumentList.leftParenthesis.end : args.last.end; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(offset, (DartEditBuilder builder) { |
if (args.isNotEmpty) { |
builder.write(', '); |
@@ -656,8 +643,7 @@ class FixProcessor { |
Position exitPosition = new Position(file, token.offset - 1); |
String indent = utils.getIndent(1); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
range.startLength(token, 0), '@override$eol$indent'); |
}); |
@@ -667,8 +653,7 @@ class FixProcessor { |
Future<Null> _addFix_boolInsteadOfBoolean() async { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.error(error), 'bool'); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_BOOLEAN_WITH_BOOL); |
@@ -678,8 +663,7 @@ class FixProcessor { |
AstNode node = coveredNode; |
if (node is Expression) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
AstNode parent = node.parent; |
while (parent != null) { |
if (parent is MethodInvocation && parent.target == node) { |
@@ -710,7 +694,7 @@ class FixProcessor { |
DartType newType = initializer.bestType; |
if (newType is InterfaceType || newType is FunctionType) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
+ await changeBuilder.addFileEdit(file, |
(DartFileEditBuilder builder) { |
builder.addReplacement(range.node(typeNode), |
(DartEditBuilder builder) { |
@@ -736,8 +720,7 @@ class FixProcessor { |
InstanceCreationExpression childArg = getChildWidget(namedExp, false); |
if (childArg != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
convertFlutterChildToChildren2( |
builder, |
childArg, |
@@ -755,8 +738,7 @@ class FixProcessor { |
ListLiteral listArg = getChildList(namedExp); |
if (listArg != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleInsertion(namedExp.offset + 'child'.length, 'ren'); |
if (listArg.typeArguments == null) { |
builder.addSimpleInsertion(listArg.offset, '<Widget>'); |
@@ -801,7 +783,6 @@ class FixProcessor { |
String suffix = ''; |
int offset = -1; |
String filePath; |
- int modificationTime = 0; |
if (prefixElement == null) { |
targetUnit = unitElement; |
CompilationUnitMember enclosingMember = |
@@ -811,7 +792,6 @@ class FixProcessor { |
} |
offset = enclosingMember.end; |
filePath = file; |
- modificationTime = fileStamp; |
prefix = '$eol$eol'; |
} else { |
for (ImportElement import in unitLibraryElement.imports) { |
@@ -822,7 +802,6 @@ class FixProcessor { |
Source targetSource = targetUnit.source; |
offset = targetSource.contents.data.length; |
filePath = targetSource.fullName; |
- modificationTime = targetSource.modificationStamp; |
prefix = '$eol'; |
suffix = '$eol'; |
break; |
@@ -834,8 +813,7 @@ class FixProcessor { |
return; |
} |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(filePath, modificationTime, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(filePath, (DartFileEditBuilder builder) { |
builder.addInsertion(offset, (DartEditBuilder builder) { |
builder.write(prefix); |
builder.writeClassDeclaration(name, nameGroupName: 'NAME'); |
@@ -877,8 +855,7 @@ class FixProcessor { |
ClassMemberLocation targetLocation = |
utils.prepareNewConstructorLocation(classDeclaration); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
builder.write(targetLocation.prefix); |
builder.writeConstructorDeclaration(classDeclaration.name.name, |
@@ -921,8 +898,7 @@ class FixProcessor { |
Source targetSource = targetElement.source; |
String targetFile = targetSource.fullName; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(targetFile, targetSource.modificationStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, (DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
builder.write(targetLocation.prefix); |
builder.writeConstructorDeclaration(targetElement.name, |
@@ -975,8 +951,7 @@ class FixProcessor { |
utils.prepareNewConstructorLocation(targetTypeNode); |
String targetFile = targetElement.source.fullName; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
builder.write(targetLocation.prefix); |
builder.writeConstructorDeclaration(targetElement.name, |
@@ -1026,8 +1001,7 @@ class FixProcessor { |
} |
String proposalName = _getConstructorProposalName(superConstructor); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
builder.write(prefix); |
// add super constructor name |
@@ -1085,8 +1059,7 @@ class FixProcessor { |
utils.prepareNewConstructorLocation(targetClassNode); |
String proposalName = _getConstructorProposalName(superConstructor); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
void writeParameters(bool includeType) { |
bool firstParameter = true; |
@@ -1190,8 +1163,7 @@ class FixProcessor { |
Source targetSource = targetClassElement.source; |
String targetFile = targetSource.fullName; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(targetFile, targetSource.modificationStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, (DartFileEditBuilder builder) { |
Expression fieldTypeNode = climbPropertyAccess(nameNode); |
DartType fieldType = _inferUndefinedExpressionType(fieldTypeNode); |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
@@ -1229,8 +1201,7 @@ class FixProcessor { |
// Add proposal. |
// |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
DartType fieldType = parameter.type?.type; |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
builder.write(targetLocation.prefix); |
@@ -1349,8 +1320,7 @@ class FixProcessor { |
Source targetSource = targetClassElement.source; |
String targetFile = targetSource.fullName; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(targetFile, targetSource.modificationStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, (DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
Expression fieldTypeNode = climbPropertyAccess(nameNode); |
DartType fieldType = _inferUndefinedExpressionType(fieldTypeNode); |
@@ -1377,7 +1347,7 @@ class FixProcessor { |
if (isAbsolute(file) && AnalysisEngine.isDartFileName(file)) { |
String libName = _computeLibraryName(file); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(source.fullName, -1, |
+ await changeBuilder.addFileEdit(source.fullName, |
(DartFileEditBuilder builder) { |
builder.addSimpleInsertion(0, 'library $libName;$eol$eol'); |
}); |
@@ -1401,8 +1371,7 @@ class FixProcessor { |
assignment.operator.type == TokenType.EQ && |
assignment.parent is ExpressionStatement) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleInsertion(node.offset, 'var '); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.CREATE_LOCAL_VARIABLE, |
@@ -1427,8 +1396,7 @@ class FixProcessor { |
} |
// build variable declaration source |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(target.offset, (DartEditBuilder builder) { |
builder.writeLocalVariableDeclaration(name, |
nameGroupName: 'NAME', type: type, typeGroupName: 'TYPE'); |
@@ -1469,8 +1437,7 @@ class FixProcessor { |
int insertOffset = targetClass.end - 1; |
String prefix = utils.getIndent(1); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
// TODO(brianwilkerson) Compare with builder.writeOverrideOfInheritedMember |
// The builder method doesn't merge getter/setter pairs into fields. |
@@ -1589,8 +1556,7 @@ class FixProcessor { |
String prefix = utils.getIndent(1); |
int insertOffset = targetClass.end - 1; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
builder.selectHere(); |
// insert empty line before existing member |
@@ -1615,7 +1581,7 @@ class FixProcessor { |
if (source != null) { |
String libName = unitLibraryElement.name; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(source.fullName, -1, |
+ await changeBuilder.addFileEdit(source.fullName, |
(DartFileEditBuilder builder) { |
// TODO(brianwilkerson) Consider using the URI rather than name |
builder.addSimpleInsertion(0, 'part of $libName;$eol$eol'); |
@@ -1631,8 +1597,7 @@ class FixProcessor { |
TypeAnnotation typeName = node.getAncestor((n) => n is TypeAnnotation); |
TypeProvider typeProvider = this.typeProvider; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.replaceTypeWithFuture(typeName, typeProvider); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_RETURN_TYPE_FUTURE); |
@@ -1641,8 +1606,7 @@ class FixProcessor { |
Future<Null> _addFix_importLibrary(FixKind kind, Source library) async { |
String libraryUri = getLibrarySourceUri(unitLibraryElement, library); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.importLibraries([library]); |
}); |
_addFixFromBuilder(changeBuilder, kind, args: [libraryUri]); |
@@ -1674,8 +1638,7 @@ class FixProcessor { |
PrefixElement prefix = imp.prefix; |
if (prefix != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
range.startLength(node, 0), '${prefix.displayName}.'); |
}); |
@@ -1704,10 +1667,8 @@ class FixProcessor { |
int offset = showCombinator.offset; |
int length = showCombinator.end - offset; |
String libraryFile = unitLibraryElement.source.fullName; |
- int libraryStamp = unitLibraryElement.context |
- .getModificationStamp(unitLibraryElement.source); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(libraryFile, libraryStamp, |
+ await changeBuilder.addFileEdit(libraryFile, |
(DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
new SourceRange(offset, length), newShowCode); |
@@ -1791,8 +1752,7 @@ class FixProcessor { |
} |
int insertOffset = error.offset + error.length; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleInsertion(insertOffset, ';'); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.INSERT_SEMICOLON); |
@@ -1803,8 +1763,7 @@ class FixProcessor { |
if (coveredNode is IsExpression) { |
IsExpression isExpression = coveredNode as IsExpression; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder |
.addReplacement(range.endEnd(isExpression.expression, isExpression), |
(DartEditBuilder builder) { |
@@ -1819,8 +1778,7 @@ class FixProcessor { |
if (coveredNode is IsExpression) { |
IsExpression isExpression = coveredNode as IsExpression; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder |
.addReplacement(range.endEnd(isExpression.expression, isExpression), |
(DartEditBuilder builder) { |
@@ -1839,8 +1797,7 @@ class FixProcessor { |
} |
String className = enclosingClass.name.name; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleInsertion( |
enclosingClass.classKeyword.offset, 'abstract '); |
}); |
@@ -1869,7 +1826,7 @@ class FixProcessor { |
if (declarationList.variables.length == 1 && |
keywordToken.keyword == Keyword.FINAL) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
+ await changeBuilder.addFileEdit(file, |
(DartFileEditBuilder builder) { |
if (declarationList.type != null) { |
builder.addReplacement( |
@@ -1893,8 +1850,7 @@ class FixProcessor { |
Future<Null> _addFix_nonBoolCondition_addNotNull() async { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleInsertion(error.offset + error.length, ' != null'); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.ADD_NE_NULL); |
@@ -1905,8 +1861,7 @@ class FixProcessor { |
if (awaitExpression is AwaitExpression) { |
final awaitToken = awaitExpression.awaitKeyword; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.startStart(awaitToken, awaitToken.next)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_AWAIT); |
@@ -1920,8 +1875,7 @@ class FixProcessor { |
if (parent is BinaryExpression) { |
if (parent.rightOperand == coveredNode) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.endEnd(parent.leftOperand, coveredNode)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_DEAD_CODE); |
@@ -1939,8 +1893,7 @@ class FixProcessor { |
SourceRange rangeToRemove = |
utils.getLinesRangeStatements(statementsToRemove); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(rangeToRemove); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_DEAD_CODE); |
@@ -1949,8 +1902,7 @@ class FixProcessor { |
SourceRange rangeToRemove = |
utils.getLinesRangeStatements(<Statement>[coveringNode]); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(rangeToRemove); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_DEAD_CODE); |
@@ -1961,15 +1913,13 @@ class FixProcessor { |
EmptyStatement emptyStatement = node; |
if (emptyStatement.parent is Block) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(utils.getLinesRange(range.node(emptyStatement))); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_EMPTY_STATEMENT); |
} else { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
range.endEnd(emptyStatement.beginToken.previous, emptyStatement), |
' {}'); |
@@ -1986,8 +1936,7 @@ class FixProcessor { |
return; |
} |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.endEnd(ancestor.name, ancestor.initializer)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_INITIALIZER); |
@@ -1999,8 +1948,7 @@ class FixProcessor { |
Token right = node.rightBracket; |
if (node.expression != null && right != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
range.startStart(node, node.expression), r'$'); |
builder.addDeletion(range.token(right)); |
@@ -2016,8 +1964,7 @@ class FixProcessor { |
node.getAncestor((node) => node is MethodDeclaration); |
if (declaration != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(utils.getLinesRange(range.node(declaration))); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_METHOD_DECLARATION); |
@@ -2031,8 +1978,7 @@ class FixProcessor { |
FunctionBody body = method.body; |
if (name != null && body != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.endStart(name, body), ' '); |
}); |
_addFixFromBuilder( |
@@ -2046,8 +1992,7 @@ class FixProcessor { |
MethodInvocation invocation = node.parent as MethodInvocation; |
if (invocation.methodName == node && invocation.target != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.endEnd(node, invocation)); |
}); |
_addFixFromBuilder( |
@@ -2063,15 +2008,13 @@ class FixProcessor { |
final parent = thisExpression.parent; |
if (parent is PropertyAccess) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.startEnd(parent, parent.operator)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_THIS_EXPRESSION); |
} else if (parent is MethodInvocation) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.startEnd(parent, parent.operator)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_THIS_EXPRESSION); |
@@ -2082,8 +2025,7 @@ class FixProcessor { |
final TypeName type = node.getAncestor((node) => node is TypeName); |
if (type != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.startStart(type, type.endToken.next)); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_TYPE_NAME); |
@@ -2099,8 +2041,7 @@ class FixProcessor { |
int expressionPrecedence = getExpressionPrecedence(expression); |
// remove 'as T' from 'e as T' |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(range.endEnd(expression, asExpression)); |
_removeEnclosingParentheses(builder, asExpression, expressionPrecedence); |
}); |
@@ -2113,8 +2054,7 @@ class FixProcessor { |
if (catchClause is CatchClause && |
catchClause.exceptionParameter == node) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion( |
range.startStart(catchClause.catchKeyword, catchClause.body)); |
}); |
@@ -2131,8 +2071,7 @@ class FixProcessor { |
catchClause.stackTraceParameter == node && |
catchClause.exceptionParameter != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder |
.addDeletion(range.endEnd(catchClause.exceptionParameter, node)); |
}); |
@@ -2151,8 +2090,7 @@ class FixProcessor { |
} |
// remove the whole line with import |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addDeletion(utils.getLinesRange(range.node(importDirective))); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_UNUSED_IMPORT); |
@@ -2160,8 +2098,7 @@ class FixProcessor { |
Future<Null> _addFix_replaceVarWithDynamic() async { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.error(error), 'dynamic'); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_VAR_WITH_DYNAMIC); |
@@ -2184,8 +2121,7 @@ class FixProcessor { |
final expression = thenStatement.expression.unParenthesized; |
if (expression is AssignmentExpression) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addReplacement(range.node(ifStatement), |
(DartEditBuilder builder) { |
builder.write(utils.getNodeText(expression.leftHandSide)); |
@@ -2204,8 +2140,7 @@ class FixProcessor { |
if (coveredNode is InstanceCreationExpression) { |
var instanceCreation = coveredNode as InstanceCreationExpression; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement( |
range.token(instanceCreation.keyword), 'const'); |
}); |
@@ -2218,8 +2153,7 @@ class FixProcessor { |
node.getAncestor((node) => node is FunctionTypedFormalParameter); |
if (functionTyped != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.node(functionTyped), |
utils.getNodeText(functionTyped.identifier)); |
}); |
@@ -2235,8 +2169,7 @@ class FixProcessor { |
final InterfaceType type = instanceCreation.staticType; |
final generics = instanceCreation.constructorName.type.typeArguments; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addReplacement(range.node(instanceCreation), |
(DartEditBuilder builder) { |
if (generics != null) { |
@@ -2260,8 +2193,7 @@ class FixProcessor { |
} |
Future<Null> addFixOfExpression(InvocationExpression expression) async { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addReplacement(range.node(ancestor), (DartEditBuilder builder) { |
if (expression is MethodInvocation && expression.target != null) { |
builder.write(utils.getNodeText(expression.target)); |
@@ -2328,8 +2260,7 @@ class FixProcessor { |
String closestName = finder._element.name; |
if (closestName != null) { |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.node(node), closestName); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.CHANGE_TO, |
@@ -2392,8 +2323,7 @@ class FixProcessor { |
if (finder._element != null) { |
String closestName = finder._element.name; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.node(node), closestName); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.CHANGE_TO, |
@@ -2424,8 +2354,7 @@ class FixProcessor { |
utils.targetClassElement = null; |
// build method source |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
builder.write(sourcePrefix); |
// append return type |
@@ -2486,8 +2415,7 @@ class FixProcessor { |
if (finder._element != null) { |
String closestName = finder._element.name; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
builder.addSimpleReplacement(range.node(node), closestName); |
}); |
_addFixFromBuilder(changeBuilder, DartFixKind.CHANGE_TO, |
@@ -2545,11 +2473,9 @@ class FixProcessor { |
ClassMemberLocation targetLocation = |
utils.prepareNewMethodLocation(targetClassNode); |
String targetFile = targetElement.source.fullName; |
- int targetStamp = |
- targetElement.context.getModificationStamp(targetElement.source); |
// build method source |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(targetFile, targetStamp, |
+ await changeBuilder.addFileEdit(targetFile, |
(DartFileEditBuilder builder) { |
builder.addInsertion(targetLocation.offset, (DartEditBuilder builder) { |
builder.write(targetLocation.prefix); |
@@ -2615,8 +2541,7 @@ class FixProcessor { |
} |
} |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
// append new field formal initializers |
if (lastRequiredParameter != null) { |
builder.addSimpleInsertion( |
@@ -2639,8 +2564,7 @@ class FixProcessor { |
n.length == errorLength) { |
Expression target = (n as MethodInvocation).target.unParenthesized; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
// replace "/" with "~/" |
BinaryExpression binary = target as BinaryExpression; |
builder.addSimpleReplacement(range.token(binary.operator), '~/'); |
@@ -2665,8 +2589,7 @@ class FixProcessor { |
if (declaringElement is ClassElement) { |
DartType declaringType = declaringElement.type; |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(file, fileStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) { |
// replace "target" with class name |
builder.addReplacement(range.node(target), (DartEditBuilder builder) { |
builder.writeType(declaringType); |
@@ -2725,10 +2648,8 @@ class FixProcessor { |
Element target) async { |
// build method source |
String targetFile = targetSource.fullName; |
- int timeStamp = target.context.getModificationStamp(targetSource); |
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver); |
- await changeBuilder.addFileEdit(targetFile, timeStamp, |
- (DartFileEditBuilder builder) { |
+ await changeBuilder.addFileEdit(targetFile, (DartFileEditBuilder builder) { |
builder.addInsertion(insertOffset, (DartEditBuilder builder) { |
builder.write(sourcePrefix); |
builder.write(prefix); |
@@ -3111,12 +3032,6 @@ class FixProcessor { |
.isWithin(packageRoot.path, source.fullName); |
} |
- int _modificationStamp(String filePath) { |
- // TODO(brianwilkerson) We have lost the ability for clients to know whether |
- // it is safe to apply an edit. |
- return driver.fsState.getFileForPath(filePath).exists ? 0 : -1; |
- } |
- |
/** |
* Removes any [ParenthesizedExpression] enclosing [expr]. |
* |