Remove timeStamp from the ChangeBuilder API

R=scheglov@google.com

Review-Url: https://codereview.chromium.org/2962223002 .
This commit is contained in:
Brian Wilkerson 2017-06-29 13:48:44 -07:00
parent e2037dc9d1
commit d1bb233f52
9 changed files with 207 additions and 383 deletions

View file

@ -280,7 +280,6 @@ class PostfixCompletionProcessor {
final PostfixCompletionContext completionContext;
final AnalysisContext analysisContext;
final CorrectionUtils utils;
int fileStamp;
AstNode node;
PostfixCompletion completion;
SourceChange change = new SourceChange('postfix-completion');
@ -291,9 +290,7 @@ class PostfixCompletionProcessor {
PostfixCompletionProcessor(this.completionContext)
: analysisContext = completionContext.unitElement.context,
utils = new CorrectionUtils(completionContext.unit) {
fileStamp = _modificationStamp(file);
}
utils = new CorrectionUtils(completionContext.unit);
AnalysisDriver get driver => completionContext.driver;
@ -320,11 +317,6 @@ class PostfixCompletionProcessor {
CompilationUnitElement get unitElement => completionContext.unitElement;
Future<PostfixCompletion> 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(file) != fileStamp) {
return NO_COMPLETION;
}
node = _selectedNode();
if (node == null) {
return NO_COMPLETION;
@ -342,8 +334,7 @@ class PostfixCompletionProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(expr), (DartEditBuilder builder) {
String newSrc = sourcer(expr);
if (newSrc == null) {
@ -377,8 +368,7 @@ class PostfixCompletionProcessor {
return null;
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// Embed the full line(s) of the statement in the try block.
var startLine = lineInfo.getLocation(stmt.offset).lineNumber - 1;
var endLine = lineInfo.getLocation(stmt.end).lineNumber - 1;
@ -477,9 +467,6 @@ class PostfixCompletionProcessor {
}
Future<bool> isApplicable() async {
if (_modificationStamp(file) != fileStamp) {
return false;
}
node = _selectedNode();
if (node == null) {
return false;
@ -560,12 +547,6 @@ class PostfixCompletionProcessor {
return expr;
}
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;
}
AstNode _selectedNode({int at: null}) =>
new NodeLocator(at == null ? selectionOffset : at).searchWithin(unit);

View file

@ -45,7 +45,6 @@ class AssistProcessor {
Source source;
String file;
int fileStamp;
CompilationUnit unit;
CompilationUnitElement unitElement;
@ -73,7 +72,6 @@ class AssistProcessor {
// source
source = dartContext.source;
file = dartContext.source.fullName;
fileStamp = _modificationStamp(file);
// unit
unit = dartContext.unit;
unitElement = dartContext.unit.element;
@ -102,12 +100,6 @@ class AssistProcessor {
}
Future<List<Assist>> 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(file) != fileStamp) {
return const <Assist>[];
}
try {
utils = new CorrectionUtils(unit);
} catch (e) {
@ -238,8 +230,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
Token keyword = declaredIdentifier.keyword;
if (keyword.keyword == Keyword.VAR) {
builder.addSimpleReplacement(range.token(keyword), typeSource);
@ -287,8 +278,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleInsertion(name.offset, '$typeSource ');
builder.importLibraries(librariesToImport);
});
@ -347,8 +337,7 @@ class AssistProcessor {
if (unitLibraryFile == file) {
// TODO(brianwilkerson) Make ChangeBuilder merge multiple edits to the
// same file so that only the else block is necessary.
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
Token keyword = declarationList.keyword;
if (keyword?.keyword == Keyword.VAR) {
builder.addSimpleReplacement(range.token(keyword), typeSource);
@ -358,8 +347,7 @@ class AssistProcessor {
builder.importLibraries(librariesToImport);
});
} else {
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
Token keyword = declarationList.keyword;
if (keyword?.keyword == Keyword.VAR) {
builder.addSimpleReplacement(range.token(keyword), typeSource);
@ -367,9 +355,8 @@ class AssistProcessor {
builder.addSimpleInsertion(variable.offset, '$typeSource ');
}
});
await changeBuilder
.addFileEdit(unitLibraryFile, _modificationStamp(unitLibraryFile),
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(unitLibraryFile,
(DartFileEditBuilder builder) {
builder.importLibraries(librariesToImport);
});
}
@ -415,8 +402,7 @@ class AssistProcessor {
if (suggestions.isNotEmpty) {
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addInsertion(offset, (DartEditBuilder builder) {
builder.write('var ');
builder.addSimpleLinkedEdit('NAME', suggestions[0],
@ -445,8 +431,7 @@ class AssistProcessor {
String prefix = utils.getNodePrefix(comment);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(comment), (DartEditBuilder builder) {
builder.writeln('/**');
for (Token token in comment.tokens) {
@ -510,8 +495,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(comment), (DartEditBuilder builder) {
for (String newLine in newLines) {
builder.write(newLine);
@ -558,8 +542,7 @@ class AssistProcessor {
return;
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
_convertFlutterChildToChildren(childArg, namedExp, eol, utils.getNodeText,
utils.getLinePrefix, utils.getIndent, utils.getText, builder);
});
@ -628,8 +611,7 @@ class AssistProcessor {
code += ';';
SourceRange replacementRange = range.startEnd(beginNodeToReplace, getter);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(replacementRange, code);
});
_addAssistFromBuilder(
@ -680,8 +662,7 @@ class AssistProcessor {
SourceRange replacementRange =
range.startEnd(fieldList.keyword, fieldDeclaration);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(replacementRange, code);
});
_addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_INTO_GETTER);
@ -702,8 +683,7 @@ class AssistProcessor {
String indent = utils.getIndent(1);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(body), (DartEditBuilder builder) {
if (body.isAsynchronous) {
builder.write('async ');
@ -749,8 +729,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(body), (DartEditBuilder builder) {
if (body.isAsynchronous) {
builder.write('async ');
@ -836,8 +815,7 @@ class AssistProcessor {
String fieldName = parameterInitializer.fieldName.name;
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// replace parameter
builder.addSimpleReplacement(range.node(parameter), 'this.$fieldName');
// remove initializer
@ -927,8 +905,7 @@ class AssistProcessor {
int firstBlockLine = utils.getLineContentEnd(body.leftBracket.end);
// add change
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// TODO(brianwilkerson) Create linked positions for the loop variable.
builder.addSimpleReplacement(
range.startEnd(forEachStatement, forEachStatement.rightParenthesis),
@ -975,8 +952,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
if (getExpressionParentPrecedence(prefExpression) >=
TokenClass.RELATIONAL_OPERATOR.precedence) {
builder.addDeletion(range.token(prefExpression.operator));
@ -1027,8 +1003,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
if (getExpressionParentPrecedence(prefExpression) >=
TokenClass.RELATIONAL_OPERATOR.precedence) {
builder.addDeletion(range.token(prefExpression.operator));
@ -1095,8 +1070,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addDeletion(
range.startStart(prefixExpression, prefixExpression.operand));
builder.addSimpleReplacement(range.node(isEmptyIdentifier), 'isNotEmpty');
@ -1121,8 +1095,7 @@ class AssistProcessor {
String typeCode = utils.getTypeSource(type, librariesToImport);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// replace parameter
if (type.isDynamic) {
builder.addSimpleReplacement(range.node(parameter), name);
@ -1188,8 +1161,7 @@ class AssistProcessor {
return;
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// rename field
builder.addSimpleReplacement(range.node(nameNode), '_$name');
// update references in constructors
@ -1265,8 +1237,7 @@ class AssistProcessor {
newOperator = '<=';
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(leftRange, _getRangeText(rightRange));
builder.addSimpleReplacement(rightRange, _getRangeText(leftRange));
// Optionally replace the operator.
@ -1313,8 +1284,7 @@ class AssistProcessor {
return;
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
String showCombinator = ' show ${referencedNames.join(', ')}';
builder.addSimpleInsertion(importDirective.end - 1, showCombinator);
});
@ -1373,8 +1343,7 @@ class AssistProcessor {
if (suggestions.isNotEmpty) {
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addInsertion(offset, (DartEditBuilder builder) {
builder.write(eol + prefix + statementPrefix);
builder.write(castTypeCode);
@ -1411,8 +1380,7 @@ class AssistProcessor {
String elseSource = _getNodeText(elseStatement);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(range.node(condition), invertedCondition);
builder.addSimpleReplacement(range.node(thenStatement), elseSource);
builder.addSimpleReplacement(range.node(elseStatement), thenSource);
@ -1473,8 +1441,7 @@ class AssistProcessor {
String newSource = utils.indentSourceLeftRight(oldSource, false);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(range.node(targetIfStatement),
'if ($condition) {$eol$newSource$prefix}');
});
@ -1538,8 +1505,7 @@ class AssistProcessor {
String newSource = utils.indentSourceLeftRight(oldSource, false);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(range.node(outerIfStatement),
'if ($condition) {$eol$newSource$prefix}');
});
@ -1609,8 +1575,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(
range.endStart(declNode, assignExpression.operator), ' ');
});
@ -1673,8 +1638,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleReplacement(
range.endStart(decl.name, assignExpression.operator), ' ');
});
@ -1777,8 +1741,7 @@ class AssistProcessor {
// add edit
Token keyword = declarationList.keyword;
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
SourceRange typeRange = range.startStart(typeNode, firstVariable);
if (keyword != null && keyword.lexeme != 'var') {
builder.addSimpleReplacement(typeRange, '');
@ -1810,8 +1773,7 @@ class AssistProcessor {
String indentList = '$indentOld${utils.getIndent(2)}';
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(node), (DartEditBuilder builder) {
builder.write('[');
builder.write(eol);
@ -1847,8 +1809,7 @@ class AssistProcessor {
String newExprSrc = utils.getNodeText(newExpr);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(newExpr), (DartEditBuilder builder) {
builder.write('new ');
builder.addSimpleLinkedEdit('WIDGET', 'widget');
@ -1929,8 +1890,7 @@ class AssistProcessor {
if (inVariable || inAssignment || inReturn) {
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// Type v = Conditional;
if (inVariable) {
VariableDeclaration variable =
@ -2019,8 +1979,7 @@ class AssistProcessor {
if (hasReturnStatements || hasExpressionStatements) {
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// returns
if (hasReturnStatements) {
String conditionSrc = _getNodeText(ifStatement.condition);
@ -2104,8 +2063,7 @@ class AssistProcessor {
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// remove "&& rightCondition"
builder
.addDeletion(range.endEnd(binaryExpression.leftOperand, condition));
@ -2165,8 +2123,7 @@ class AssistProcessor {
return;
}
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
// remove initializer value
builder.addDeletion(range.endStart(variable.name, statement.semicolon));
// add assignment statement
@ -2215,8 +2172,7 @@ class AssistProcessor {
// "block"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addSimpleInsertion(statementsRange.offset, '$indentOld{$eol');
builder.addSimpleReplacement(
statementsRange,
@ -2230,8 +2186,7 @@ class AssistProcessor {
// "if"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('if (');
@ -2250,8 +2205,7 @@ class AssistProcessor {
// "while"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('while (');
@ -2270,8 +2224,7 @@ class AssistProcessor {
// "for-in"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('for (var ');
@ -2292,8 +2245,7 @@ class AssistProcessor {
// "for"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('for (var ');
@ -2318,8 +2270,7 @@ class AssistProcessor {
// "do-while"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('do {');
@ -2339,8 +2290,7 @@ class AssistProcessor {
// "try-catch"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('try {');
@ -2370,8 +2320,7 @@ class AssistProcessor {
// "try-finally"
{
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(statementsRange, (DartEditBuilder builder) {
builder.write(indentOld);
builder.write('try {');
@ -2469,12 +2418,6 @@ class AssistProcessor {
return utils.getRangeText(range);
}
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;
}
Position _newPosition(int offset) {
return new Position(file, offset);
}
@ -2491,8 +2434,7 @@ class AssistProcessor {
int lnOffset = lineInfo.getOffsetOfLine(currLn);
DartChangeBuilder changeBuilder = new DartChangeBuilder(driver);
await changeBuilder.addFileEdit(file, fileStamp,
(DartFileEditBuilder builder) {
await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
builder.addReplacement(range.node(exprGoingDown),
(DartEditBuilder builder) {
String argSrc =

View file

@ -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].
*

View file

@ -44,9 +44,9 @@ class ChangeBuilderImpl implements ChangeBuilder {
}
@override
Future<Null> addFileEdit(String path, int fileStamp,
void buildFileEdit(FileEditBuilder builder)) async {
FileEditBuilderImpl builder = await createFileEditBuilder(path, fileStamp);
Future<Null> addFileEdit(
String path, void buildFileEdit(FileEditBuilder builder)) async {
FileEditBuilderImpl builder = await createFileEditBuilder(path);
buildFileEdit(builder);
_change.addFileEdit(builder.fileEdit);
builder.finalize();
@ -56,9 +56,8 @@ class ChangeBuilderImpl implements ChangeBuilder {
* Create and return a [FileEditBuilder] that can be used to build edits to
* the file with the given [path] and [timeStamp].
*/
Future<FileEditBuilderImpl> createFileEditBuilder(
String path, int timeStamp) async {
return new FileEditBuilderImpl(this, path, timeStamp);
Future<FileEditBuilderImpl> createFileEditBuilder(String path) async {
return new FileEditBuilderImpl(this, path, 0);
}
/**

View file

@ -40,15 +40,15 @@ class DartChangeBuilderImpl extends ChangeBuilderImpl
DartChangeBuilderImpl(this.driver);
@override
Future<Null> addFileEdit(String path, int fileStamp,
void buildFileEdit(DartFileEditBuilder builder)) =>
super.addFileEdit(path, fileStamp, buildFileEdit);
Future<Null> addFileEdit(
String path, void buildFileEdit(DartFileEditBuilder builder)) =>
super.addFileEdit(path, buildFileEdit);
@override
Future<DartFileEditBuilderImpl> createFileEditBuilder(
String path, int fileStamp) async {
Future<DartFileEditBuilderImpl> createFileEditBuilder(String path) async {
AnalysisResult result = await driver.getResult(path);
return new DartFileEditBuilderImpl(this, path, fileStamp, result.unit);
int timeStamp = driver.fsState.getFileForPath(path).exists ? 0 : -1;
return new DartFileEditBuilderImpl(this, path, timeStamp, result.unit);
}
}

View file

@ -28,12 +28,10 @@ abstract class ChangeBuilder {
/**
* Use the [buildFileEdit] function to create a collection of edits to the
* file with the given [path]. The edits will be added to the source change
* that is being built. The [timeStamp] is the time at which the file was last
* modified and is used by clients to ensure that it is safe to apply the
* edits.
* that is being built.
*/
Future<Null> addFileEdit(
String path, int timeStamp, void buildFileEdit(FileEditBuilder builder));
String path, void buildFileEdit(FileEditBuilder builder));
/**
* Set the selection for the change being built to the given [position].

View file

@ -25,8 +25,8 @@ abstract class DartChangeBuilder implements ChangeBuilder {
factory DartChangeBuilder(AnalysisDriver driver) = DartChangeBuilderImpl;
@override
Future<Null> addFileEdit(String path, int fileStamp,
void buildFileEdit(DartFileEditBuilder builder));
Future<Null> addFileEdit(
String path, void buildFileEdit(DartFileEditBuilder builder));
}
/**

View file

@ -23,13 +23,11 @@ class ChangeBuilderImplTest {
test_createFileEditBuilder() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
String path = '/test.dart';
int timeStamp = 54;
FileEditBuilderImpl fileEditBuilder =
await builder.createFileEditBuilder(path, timeStamp);
await builder.createFileEditBuilder(path);
expect(fileEditBuilder, new isInstanceOf<FileEditBuilder>());
SourceFileEdit fileEdit = fileEditBuilder.fileEdit;
expect(fileEdit.file, path);
expect(fileEdit.fileStamp, timeStamp);
}
void test_getLinkedEditGroup() {
@ -59,7 +57,7 @@ class ChangeBuilderImplTest {
test_sourceChange_oneChange() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
String path = '/test.dart';
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {});
await builder.addFileEdit(path, (FileEditBuilder builder) {});
builder.getLinkedEditGroup('a');
SourceChange sourceChange = builder.sourceChange;
expect(sourceChange, isNotNull);
@ -78,7 +76,7 @@ class EditBuilderImplTest {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
int offset = 10;
String text = 'content';
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
builder.addLinkedEdit('a', (LinkedEditBuilder builder) {
builder.write(text);
@ -103,7 +101,7 @@ class EditBuilderImplTest {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
int offset = 10;
String text = 'content';
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
builder.addSimpleLinkedEdit('a', text);
SourceEdit sourceEdit = (builder as EditBuilderImpl).sourceEdit;
@ -124,7 +122,7 @@ class EditBuilderImplTest {
test_createLinkedEditBuilder() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
LinkedEditBuilderImpl linkBuilder =
(builder as EditBuilderImpl).createLinkedEditBuilder();
@ -135,7 +133,7 @@ class EditBuilderImplTest {
test_selectHere() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
builder.selectHere();
});
@ -145,10 +143,9 @@ class EditBuilderImplTest {
test_write() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
int timeStamp = 93;
int offset = 10;
String text = 'write';
await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(offset, (EditBuilder builder) {
builder.write(text);
});
@ -162,7 +159,6 @@ class EditBuilderImplTest {
SourceFileEdit fileEdit = fileEdits[0];
expect(fileEdit, isNotNull);
expect(fileEdit.file, path);
expect(fileEdit.fileStamp, timeStamp);
List<SourceEdit> edits = fileEdit.edits;
expect(edits, hasLength(1));
@ -175,10 +171,9 @@ class EditBuilderImplTest {
test_writeln_withoutText() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
int timeStamp = 39;
int offset = 52;
int length = 12;
await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addReplacement(new SourceRange(offset, length),
(EditBuilder builder) {
builder.writeln();
@ -193,7 +188,6 @@ class EditBuilderImplTest {
SourceFileEdit fileEdit = fileEdits[0];
expect(fileEdit, isNotNull);
expect(fileEdit.file, path);
expect(fileEdit.fileStamp, timeStamp);
List<SourceEdit> edits = fileEdit.edits;
expect(edits, hasLength(1));
@ -206,11 +200,10 @@ class EditBuilderImplTest {
test_writeln_withText() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
int timeStamp = 39;
int offset = 52;
int length = 12;
String text = 'writeln';
await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addReplacement(new SourceRange(offset, length),
(EditBuilder builder) {
builder.writeln(text);
@ -225,7 +218,6 @@ class EditBuilderImplTest {
SourceFileEdit fileEdit = fileEdits[0];
expect(fileEdit, isNotNull);
expect(fileEdit.file, path);
expect(fileEdit.fileStamp, timeStamp);
List<SourceEdit> edits = fileEdit.edits;
expect(edits, hasLength(1));
@ -246,7 +238,7 @@ class FileEditBuilderImplTest {
int offset = 23;
int length = 7;
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addDeletion(new SourceRange(offset, length));
});
List<SourceEdit> edits = builder.sourceChange.edits[0].edits;
@ -258,7 +250,7 @@ class FileEditBuilderImplTest {
test_addInsertion() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
expect(builder, isNotNull);
});
@ -268,7 +260,7 @@ class FileEditBuilderImplTest {
test_addLinkedPosition() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
String groupName = 'a';
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addLinkedPosition(new SourceRange(3, 6), groupName);
});
@ -283,7 +275,7 @@ class FileEditBuilderImplTest {
test_addReplacement() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addReplacement(new SourceRange(4, 5), (EditBuilder builder) {
expect(builder, isNotNull);
});
@ -294,7 +286,7 @@ class FileEditBuilderImplTest {
int offset = 23;
String text = 'xyz';
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addSimpleInsertion(offset, text);
});
List<SourceEdit> edits = builder.sourceChange.edits[0].edits;
@ -309,7 +301,7 @@ class FileEditBuilderImplTest {
int length = 7;
String text = 'xyz';
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addSimpleReplacement(new SourceRange(offset, length), text);
});
List<SourceEdit> edits = builder.sourceChange.edits[0].edits;
@ -321,7 +313,7 @@ class FileEditBuilderImplTest {
test_createEditBuilder() async {
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
int offset = 4;
int length = 5;
EditBuilderImpl editBuilder =
@ -342,7 +334,7 @@ class LinkedEditBuilderImplTest {
test_addSuggestion() async {
String groupName = 'a';
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) {
builder.addSuggestion(LinkedEditSuggestionKind.TYPE, 'A');
@ -357,7 +349,7 @@ class LinkedEditBuilderImplTest {
test_addSuggestions() async {
String groupName = 'a';
ChangeBuilderImpl builder = new ChangeBuilderImpl();
await builder.addFileEdit(path, 0, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(10, (EditBuilder builder) {
builder.addLinkedEdit(groupName, (LinkedEditBuilder builder) {
builder.addSuggestions(LinkedEditSuggestionKind.TYPE, ['A', 'B']);

View file

@ -61,14 +61,12 @@ class DartChangeBuilderImplTest extends AbstractContextTest {
test_createFileEditBuilder() async {
String path = provider.convertPath('/test.dart');
addSource(path, 'library test;');
int timeStamp = 54;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
DartFileEditBuilderImpl fileEditBuilder =
await builder.createFileEditBuilder(path, timeStamp);
await builder.createFileEditBuilder(path);
expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>());
SourceFileEdit fileEdit = fileEditBuilder.fileEdit;
expect(fileEdit.file, path);
expect(fileEdit.fileStamp, timeStamp);
}
}
@ -341,7 +339,7 @@ import 'aaa.dart';
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeClassDeclaration('C', interfaces: [typeA]);
@ -357,7 +355,7 @@ import 'aaa.dart';
addSource(path, '');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeClassDeclaration('C', isAbstract: true);
@ -372,7 +370,7 @@ import 'aaa.dart';
addSource(path, '');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder).writeClassDeclaration('C',
memberWriter: () {
@ -390,7 +388,7 @@ import 'aaa.dart';
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeClassDeclaration('C', mixins: [typeA]);
@ -408,7 +406,7 @@ import 'aaa.dart';
DartType typeB = await _getType(path, 'B');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeClassDeclaration('C', mixins: [typeB], superclass: typeA);
@ -424,7 +422,7 @@ import 'aaa.dart';
addSource(path, '');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeClassDeclaration('C', nameGroupName: 'name');
@ -447,7 +445,7 @@ import 'aaa.dart';
DartType typeB = await _getType(path, 'B');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder).writeClassDeclaration('C',
superclass: typeB, superclassGroupName: 'superclass');
@ -470,7 +468,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeFieldDeclaration('f',
initializerWriter: () {
@ -488,7 +486,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true);
});
@ -503,7 +501,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeFieldDeclaration('f', isConst: true, isFinal: true);
@ -519,7 +517,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true);
});
@ -534,7 +532,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true);
});
@ -549,7 +547,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeFieldDeclaration('f', nameGroupName: 'name');
@ -575,7 +573,7 @@ import 'aaa.dart';
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeFieldDeclaration('f', type: typeA, typeGroupName: 'type');
@ -600,7 +598,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder).writeFunctionDeclaration('fib',
bodyWriter: () {
@ -618,7 +616,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeFunctionDeclaration('fib', nameGroupName: 'name');
@ -641,7 +639,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder).writeFunctionDeclaration('fib',
parameterWriter: () {
@ -661,7 +659,7 @@ import 'aaa.dart';
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(0, (EditBuilder builder) {
(builder as DartEditBuilder).writeFunctionDeclaration('fib',
returnType: typeA, returnTypeGroupName: 'type');
@ -684,7 +682,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeGetterDeclaration('g',
bodyWriter: () {
@ -702,7 +700,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeGetterDeclaration('g', isStatic: true);
@ -718,7 +716,7 @@ import 'aaa.dart';
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeGetterDeclaration('g', nameGroupName: 'name');
@ -744,7 +742,7 @@ import 'aaa.dart';
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeGetterDeclaration('g',
returnType: typeA, returnTypeGroupName: 'returnType');
@ -773,7 +771,7 @@ void f() {
await driver.getResult(path);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
initializerWriter: () {
@ -795,7 +793,7 @@ void f() {
await driver.getResult(path);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeLocalVariableDeclaration('foo', nameGroupName: 'name');
@ -822,7 +820,7 @@ void f() {
await driver.getResult(path);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeLocalVariableDeclaration('foo', isConst: true);
@ -842,7 +840,7 @@ void f() {
await driver.getResult(path);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeLocalVariableDeclaration('foo', isFinal: true);
@ -865,7 +863,7 @@ class MyClass {}''';
ClassDeclaration A = unit.declarations[1];
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
initializerWriter: () {
@ -890,7 +888,7 @@ class MyClass {}''';
ClassDeclaration A = unit.declarations[1];
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
type: A.element.type, typeGroupName: 'type');
@ -920,7 +918,7 @@ class MyClass {}''';
ClassDeclaration A = unit.declarations[1];
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(11, (EditBuilder builder) {
(builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
isFinal: true, type: A.element.type, typeGroupName: 'type');
@ -949,7 +947,7 @@ class B extends A {
ClassElement classA = await _getClassElement(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeOverrideOfInheritedMember(classA.methods[0]);
@ -982,7 +980,7 @@ class A {}
Expression argument = invocation.argumentList.arguments[0];
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(2, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeParameterMatchingArgument(argument, 0, new Set<String>());
@ -1004,7 +1002,7 @@ class A {}
.map(resolutionMap.elementDeclaredByFormalParameter);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeParameters(elements);
});
@ -1024,7 +1022,7 @@ class A {}
.map(resolutionMap.elementDeclaredByFormalParameter);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeParameters(elements);
});
@ -1044,7 +1042,7 @@ class A {}
.map(resolutionMap.elementDeclaredByFormalParameter);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeParameters(elements);
});
@ -1067,7 +1065,7 @@ f(int i, String s) {
MethodInvocation invocation = statement.expression;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeParametersMatchingArguments(invocation.argumentList);
@ -1091,7 +1089,7 @@ f(int i, String s) {
MethodInvocation invocation = statement.expression;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeParametersMatchingArguments(invocation.argumentList);
@ -1108,7 +1106,7 @@ f(int i, String s) {
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeParameterSource(typeA, 'a');
});
@ -1124,7 +1122,7 @@ f(int i, String s) {
CompilationUnit unit = (await driver.getResult(path))?.unit;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(resolutionMap
.elementDeclaredByCompilationUnit(unit)
@ -1145,7 +1143,7 @@ f(int i, String s) {
InterfaceType typeB = await _getType(path, 'B');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(typeB.instantiate([typeA]));
});
@ -1161,7 +1159,7 @@ f(int i, String s) {
DartType typeC = await _getType(path, 'C');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(typeC, groupName: 'type');
});
@ -1183,7 +1181,7 @@ f(int i, String s) {
DartType typeC = await _getType(path, 'C');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder)
.writeType(typeC, addSupertypeProposals: true, groupName: 'type');
@ -1215,7 +1213,7 @@ f(int i, String s) {
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(null);
});
@ -1231,7 +1229,7 @@ f(int i, String s) {
CompilationUnit unit = (await driver.getResult(path))?.unit;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(
resolutionMap
@ -1253,7 +1251,7 @@ f(int i, String s) {
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(typeA, required: true);
});
@ -1268,7 +1266,7 @@ f(int i, String s) {
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(null, required: true);
});
@ -1284,7 +1282,7 @@ f(int i, String s) {
DartType typeA = await _getType(path, 'A');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilder).writeType(typeA);
});
@ -1299,7 +1297,7 @@ f(int i, String s) {
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilderImpl).writeTypes([]);
});
@ -1316,7 +1314,7 @@ f(int i, String s) {
DartType typeB = await _getType(path, 'B');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilderImpl).writeTypes([typeA, typeB]);
});
@ -1331,7 +1329,7 @@ f(int i, String s) {
addSource(path, content);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilderImpl).writeTypes(null);
});
@ -1348,7 +1346,7 @@ f(int i, String s) {
DartType typeB = await _getType(path, 'B');
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
builder.addInsertion(content.length - 1, (EditBuilder builder) {
(builder as DartEditBuilderImpl)
.writeTypes([typeA, typeB], prefix: 'implements ');
@ -1363,7 +1361,7 @@ f(int i, String s) {
String path = provider.convertPath('/test.dart');
addSource(path, initialCode);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (DartFileEditBuilder builder) {
await builder.addFileEdit(path, (DartFileEditBuilder builder) {
Iterable<_MockSource> sources = newUris.map((newUri) {
String path =
newUri.contains(':') ? null : provider.convertPath('/$newUri');
@ -1409,7 +1407,7 @@ class DartFileEditBuilderImplTest extends AbstractContextTest
FunctionBody body = function.functionExpression.body;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
(builder as DartFileEditBuilder)
.convertFunctionFromSyncToAsync(body, typeProvider);
});
@ -1424,9 +1422,8 @@ class DartFileEditBuilderImplTest extends AbstractContextTest
test_createEditBuilder() async {
String path = provider.convertPath('/test.dart');
addSource(path, 'library test;');
int timeStamp = 65;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
int offset = 4;
int length = 5;
DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl)
@ -1448,7 +1445,7 @@ class DartFileEditBuilderImplTest extends AbstractContextTest
TypeAnnotation type = function.returnType;
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
await builder.addFileEdit(path, (FileEditBuilder builder) {
(builder as DartFileEditBuilder)
.replaceTypeWithFuture(type, typeProvider);
});