Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
index bce8224077f569f37547c9fc951c795466bcfec5..95703f0ab458c9f900ecd4328e224c95ca5473ca 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
@@ -664,8 +664,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
var receiver = pop(); |
bool isSuper = false; |
if (receiver is ThisAccessor && receiver.isSuper) { |
+ ThisAccessor thisAccessorReceiver = receiver; |
isSuper = true; |
- receiver = new ThisExpression(); |
+ receiver = astFactory.thisExpression(thisAccessorReceiver.token); |
} |
push(buildBinaryOperator(toValue(receiver), token, argument, isSuper)); |
} |
@@ -687,14 +688,14 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
if (isSuper) { |
result = toSuperMethodInvocation(result); |
} |
- return negate ? new Not(result) : result; |
+ return negate ? astFactory.not(null, result) : result; |
} |
} |
void doLogicalExpression(Token token) { |
Expression argument = popForValue(); |
Expression receiver = popForValue(); |
- push(new LogicalExpression(receiver, token.stringValue, argument)); |
+ push(astFactory.logicalExpression(receiver, token.stringValue, argument)); |
} |
/// Handle `a ?? b`. |
@@ -729,9 +730,10 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
if (!target.isAccessor) { |
if (areArgumentsCompatible(target.function, node.arguments)) { |
// TODO(ahe): Use [DirectMethodInvocation] when possible. |
- Expression result = new DirectMethodInvocation( |
+ Expression result = astFactory.directMethodInvocation( |
new ThisExpression(), target, node.arguments); |
- result = new SuperMethodInvocation(node.name, node.arguments, null); |
+ result = astFactory.superMethodInvocation( |
+ null, node.name, node.arguments, null); |
return result; |
} else { |
isNoSuchMethod = true; |
@@ -744,8 +746,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
isSuper: true); |
} |
// TODO(ahe): Use [DirectPropertyGet] when possible. |
- Expression receiver = new DirectPropertyGet(new ThisExpression(), target); |
- receiver = new SuperPropertyGet(node.name, target); |
+ Expression receiver = |
+ astFactory.directPropertyGet(new ThisExpression(), target); |
+ receiver = astFactory.superPropertyGet(node.name, target); |
return buildMethodInvocation( |
receiver, callName, node.arguments, node.fileOffset); |
} |
@@ -1177,8 +1180,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
Expression value = popForValue(); |
var accessor = pop(); |
if (accessor is TypeDeclarationBuilder) { |
- push(wrapInvalid(new TypeLiteral( |
- accessor.buildTypesWithBuiltArguments(library, null)))); |
+ push(wrapInvalid(astFactory |
+ .typeLiteral(accessor.buildTypesWithBuiltArguments(library, null)))); |
} else if (accessor is! FastaAccessor) { |
push(buildCompileTimeError("Can't assign to this.", token.charOffset)); |
} else { |
@@ -1259,10 +1262,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
} |
@override |
- void endAwaitExpression(Token beginToken, Token endToken) { |
+ void endAwaitExpression(Token keyword, Token endToken) { |
debugEvent("AwaitExpression"); |
- push( |
- new AwaitExpression(popForValue())..fileOffset = beginToken.charOffset); |
+ push(astFactory.awaitExpression(keyword, popForValue())); |
} |
@override |
@@ -1330,9 +1332,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
valueType = typeArguments[1]; |
} |
} |
- push(new MapLiteral(entries, |
- keyType: keyType, valueType: valueType, isConst: constKeyword != null) |
- ..fileOffset = constKeyword?.charOffset ?? beginToken.charOffset); |
+ push(astFactory.mapLiteral(beginToken, constKeyword, entries, |
+ keyType: keyType, valueType: valueType)); |
} |
@override |
@@ -1366,7 +1367,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
value += ".${symbolPartToString(parts[i])}"; |
} |
} |
- push(new SymbolLiteral(value)); |
+ push(astFactory.symbolLiteral(hashToken, value)); |
} |
DartType kernelTypeFromString( |
@@ -1478,7 +1479,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
debugEvent("AsOperator"); |
DartType type = pop(); |
Expression expression = popForValue(); |
- push(new AsExpression(expression, type)..fileOffset = operator.charOffset); |
+ push(astFactory.asExpression(expression, operator, type)); |
} |
@override |
@@ -1514,7 +1515,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
push(buildCompileTimeError( |
"Not a constant expression.", throwToken.charOffset)); |
} else { |
- push(new Throw(expression)..fileOffset = throwToken.charOffset); |
+ push(astFactory.throwExpression(throwToken, expression)); |
} |
} |
@@ -1733,7 +1734,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
debugEvent("UnaryPrefixExpression"); |
var receiver = pop(); |
if (optional("!", token)) { |
- push(new Not(toValue(receiver))); |
+ push(astFactory.not(token, toValue(receiver))); |
} else { |
String operator = token.stringValue; |
if (optional("-", token)) { |
@@ -1741,7 +1742,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
} |
if (receiver is ThisAccessor && receiver.isSuper) { |
push(toSuperMethodInvocation(buildMethodInvocation( |
- new ThisExpression()..fileOffset = offsetForToken(receiver.token), |
+ astFactory.thisExpression(receiver.token), |
new Name(operator), |
new Arguments.empty(), |
token.charOffset))); |
@@ -1849,12 +1850,11 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
return throwNoSuchMethodError(target.name.name, arguments, charOffset); |
} |
if (target is Constructor) { |
- return new ConstructorInvocation(target, arguments) |
- ..isConst = isConst |
+ return astFactory.constructorInvocation(target, arguments, |
+ isConst: isConst) |
..fileOffset = charOffset; |
} else { |
- return new StaticInvocation(target, arguments) |
- ..isConst = isConst |
+ return astFactory.staticInvocation(target, arguments, isConst: isConst) |
..fileOffset = charOffset; |
} |
} |
@@ -2242,15 +2242,15 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
} |
@override |
- void endRethrowStatement(Token throwToken, Token endToken) { |
+ void endRethrowStatement(Token rethrowToken, Token endToken) { |
debugEvent("RethrowStatement"); |
if (inCatchBlock) { |
- push(astFactory.expressionStatement( |
- new Rethrow()..fileOffset = throwToken.charOffset)); |
+ push(astFactory |
+ .expressionStatement(astFactory.rethrowExpression(rethrowToken))); |
} else { |
push(buildCompileTimeErrorStatement( |
"'rethrow' can only be used in catch clauses.", |
- throwToken.charOffset)); |
+ rethrowToken.charOffset)); |
} |
} |