Index: pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart b/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart |
index bdaf32bd151f4753b8a6a8f6663fdec1500d8bbf..a884f2a58a7fef5a2841075c7b6b84b29f9be6c0 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart |
@@ -128,8 +128,8 @@ abstract class FastaAccessor implements Accessor { |
/* Expression | FastaAccessor */ buildPropertyAccess( |
IncompleteSend send, bool isNullAware) { |
if (send is SendAccessor) { |
- return buildMethodInvocation(buildSimpleRead(), send.name, send.arguments, |
- offsetForToken(send.token), |
+ return buildMethodInvocation(helper.astFactory, buildSimpleRead(), |
+ send.name, send.arguments, offsetForToken(send.token), |
isNullAware: isNullAware); |
} else { |
return PropertyAccessor.make(helper, send.token, buildSimpleRead(), |
@@ -315,8 +315,12 @@ class ThisAccessor extends FastaAccessor { |
if (send is SendAccessor) { |
// Notice that 'this' or 'super' can't be null. So we can ignore the |
// value of [isNullAware]. |
- MethodInvocation result = buildMethodInvocation(new ThisExpression(), |
- send.name, send.arguments, offsetForToken(token)); |
+ MethodInvocation result = buildMethodInvocation( |
+ helper.astFactory, |
+ new ThisExpression(), |
+ send.name, |
+ send.arguments, |
+ offsetForToken(token)); |
return isSuper ? helper.toSuperMethodInvocation(result) : result; |
} else { |
if (isSuper) { |
@@ -336,7 +340,7 @@ class ThisAccessor extends FastaAccessor { |
return buildConstructorInitializer(offset, new Name(""), arguments); |
} else { |
return buildMethodInvocation( |
- new ThisExpression(), callName, arguments, offset); |
+ helper.astFactory, new ThisExpression(), callName, arguments, offset); |
} |
} |
@@ -492,6 +496,7 @@ class SendAccessor extends IncompleteSend { |
if (target != null) { |
if (target is Field) { |
result = buildMethodInvocation( |
+ helper.astFactory, |
new StaticGet(target), |
callName, |
arguments, |
@@ -507,7 +512,7 @@ class SendAccessor extends IncompleteSend { |
} |
} |
} else { |
- result = buildMethodInvocation( |
+ result = buildMethodInvocation(helper.astFactory, |
helper.toValue(receiver), name, arguments, offsetForToken(token), |
isNullAware: isNullAware); |
} |
@@ -630,7 +635,7 @@ class IndexAccessor extends kernel.IndexAccessor with FastaAccessor { |
IndexAccessor.internal(this.helper, Token token, Expression receiver, |
Expression index, Procedure getter, Procedure setter) |
- : super.internal(receiver, index, getter, setter, token); |
+ : super.internal(helper, receiver, index, getter, setter, token); |
String get plainNameForRead => "[]"; |
@@ -638,7 +643,7 @@ class IndexAccessor extends kernel.IndexAccessor with FastaAccessor { |
Expression doInvocation(int offset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, offset); |
+ helper.astFactory, buildSimpleRead(), callName, arguments, offset); |
} |
toString() => "IndexAccessor()"; |
@@ -664,14 +669,15 @@ class PropertyAccessor extends kernel.PropertyAccessor with FastaAccessor { |
PropertyAccessor.internal(this.helper, Token token, Expression receiver, |
Name name, Member getter, Member setter) |
- : super.internal(receiver, name, getter, setter, token); |
+ : super.internal(helper, receiver, name, getter, setter, token); |
String get plainNameForRead => name.name; |
bool get isThisPropertyAccessor => receiver is ThisExpression; |
Expression doInvocation(int offset, Arguments arguments) { |
- return buildMethodInvocation(receiver, name, arguments, offset); |
+ return buildMethodInvocation( |
+ helper.astFactory, receiver, name, arguments, offset); |
} |
toString() => "PropertyAccessor()"; |
@@ -728,8 +734,8 @@ class StaticAccessor extends kernel.StaticAccessor with FastaAccessor { |
Expression doInvocation(int offset, Arguments arguments) { |
if (readTarget == null || isFieldOrGetter(readTarget)) { |
- return buildMethodInvocation(buildSimpleRead(), callName, arguments, |
- offset + (readTarget?.name?.name?.length ?? 0)); |
+ return buildMethodInvocation(helper.astFactory, buildSimpleRead(), |
+ callName, arguments, offset + (readTarget?.name?.name?.length ?? 0)); |
} else { |
return helper.buildStaticInvocation(readTarget, arguments) |
..fileOffset = offset; |
@@ -741,18 +747,16 @@ class StaticAccessor extends kernel.StaticAccessor with FastaAccessor { |
class SuperPropertyAccessor extends kernel.SuperPropertyAccessor |
with FastaAccessor { |
- final BuilderHelper helper; |
- |
- SuperPropertyAccessor( |
- this.helper, Token token, Name name, Member getter, Member setter) |
- : super(name, getter, setter, token); |
+ SuperPropertyAccessor(BuilderHelper helper, Token token, Name name, |
+ Member getter, Member setter) |
+ : super(helper, name, getter, setter, token); |
String get plainNameForRead => name.name; |
Expression doInvocation(int offset, Arguments arguments) { |
if (getter == null || isFieldOrGetter(getter)) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, offset); |
+ helper.astFactory, buildSimpleRead(), callName, arguments, offset); |
} else { |
return new DirectMethodInvocation(new ThisExpression(), getter, arguments) |
..fileOffset = offset; |
@@ -763,11 +767,9 @@ class SuperPropertyAccessor extends kernel.SuperPropertyAccessor |
} |
class ThisIndexAccessor extends kernel.ThisIndexAccessor with FastaAccessor { |
- final BuilderHelper helper; |
- |
- ThisIndexAccessor(this.helper, Token token, Expression index, |
+ ThisIndexAccessor(BuilderHelper helper, Token token, Expression index, |
Procedure getter, Procedure setter) |
- : super(index, getter, setter, token); |
+ : super(helper, index, getter, setter, token); |
String get plainNameForRead => "[]"; |
@@ -775,18 +777,16 @@ class ThisIndexAccessor extends kernel.ThisIndexAccessor with FastaAccessor { |
Expression doInvocation(int offset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, offset); |
+ helper.astFactory, buildSimpleRead(), callName, arguments, offset); |
} |
toString() => "ThisIndexAccessor()"; |
} |
class SuperIndexAccessor extends kernel.SuperIndexAccessor with FastaAccessor { |
- final BuilderHelper helper; |
- |
- SuperIndexAccessor( |
- this.helper, Token token, Expression index, Member getter, Member setter) |
- : super(index, getter, setter, token); |
+ SuperIndexAccessor(BuilderHelper helper, Token token, Expression index, |
+ Member getter, Member setter) |
+ : super(helper, index, getter, setter, token); |
String get plainNameForRead => "[]"; |
@@ -794,7 +794,7 @@ class SuperIndexAccessor extends kernel.SuperIndexAccessor with FastaAccessor { |
Expression doInvocation(int offset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, offset); |
+ helper.astFactory, buildSimpleRead(), callName, arguments, offset); |
} |
toString() => "SuperIndexAccessor()"; |
@@ -806,7 +806,7 @@ class ThisPropertyAccessor extends kernel.ThisPropertyAccessor |
ThisPropertyAccessor( |
this.helper, Token token, Name name, Member getter, Member setter) |
- : super(name, getter, setter, token); |
+ : super(helper, name, getter, setter, token); |
String get plainNameForRead => name.name; |
@@ -819,7 +819,8 @@ class ThisPropertyAccessor extends kernel.ThisPropertyAccessor |
// `this.name.call(arguments)`. |
interfaceTarget = null; |
} |
- return buildMethodInvocation(new ThisExpression(), name, arguments, offset); |
+ return buildMethodInvocation( |
+ helper.astFactory, new ThisExpression(), name, arguments, offset); |
} |
toString() => "ThisPropertyAccessor()"; |
@@ -831,7 +832,7 @@ class NullAwarePropertyAccessor extends kernel.NullAwarePropertyAccessor |
NullAwarePropertyAccessor(this.helper, Token token, Expression receiver, |
Name name, Member getter, Member setter, DartType type) |
- : super(receiver, name, getter, setter, type, token); |
+ : super(helper, receiver, name, getter, setter, type, token); |
String get plainNameForRead => name.name; |
@@ -843,37 +844,33 @@ class NullAwarePropertyAccessor extends kernel.NullAwarePropertyAccessor |
} |
class VariableAccessor extends kernel.VariableAccessor with FastaAccessor { |
- @override |
- final BuilderHelper helper; |
- |
- VariableAccessor(this.helper, Token token, VariableDeclaration variable, |
+ VariableAccessor( |
+ BuilderHelper helper, Token token, VariableDeclaration variable, |
[DartType promotedType]) |
- : super(variable, promotedType, token); |
+ : super(helper, variable, promotedType, token); |
String get plainNameForRead => variable.name; |
Expression doInvocation(int offset, Arguments arguments) { |
// Normally the offset is at the start of the token, but in this case, |
// because we insert a '.call', we want it at the end instead. |
- return buildMethodInvocation(buildSimpleRead(), callName, arguments, |
- offset + (variable.name?.length ?? 0)); |
+ return buildMethodInvocation(helper.astFactory, buildSimpleRead(), callName, |
+ arguments, offset + (variable.name?.length ?? 0)); |
} |
toString() => "VariableAccessor()"; |
} |
class ReadOnlyAccessor extends kernel.ReadOnlyAccessor with FastaAccessor { |
- final BuilderHelper helper; |
- |
final String plainNameForRead; |
- ReadOnlyAccessor( |
- this.helper, Expression expression, this.plainNameForRead, Token token) |
- : super(expression, token); |
+ ReadOnlyAccessor(BuilderHelper helper, Expression expression, |
+ this.plainNameForRead, Token token) |
+ : super(helper, expression, token); |
Expression doInvocation(int offset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, offset); |
+ helper.astFactory, buildSimpleRead(), callName, arguments, offset); |
} |
} |
@@ -917,20 +914,22 @@ bool isFieldOrGetter(Member member) { |
return member is Field || (member is Procedure && member.isGetter); |
} |
-Expression buildMethodInvocation( |
- Expression receiver, Name name, Arguments arguments, int offset, |
+Expression buildMethodInvocation(AstFactory astFactory, Expression receiver, |
+ Name name, Arguments arguments, int offset, |
{bool isNullAware: false}) { |
if (isNullAware) { |
VariableDeclaration variable = new VariableDeclaration.forValue(receiver); |
return makeLet( |
variable, |
new ConditionalExpression( |
- buildIsNull(new VariableGet(variable)), |
+ buildIsNull(astFactory, new VariableGet(variable)), |
new NullLiteral(), |
- new MethodInvocation(new VariableGet(variable), name, arguments) |
+ astFactory.methodInvocation( |
+ new VariableGet(variable), name, arguments) |
..fileOffset = offset, |
const DynamicType())); |
} else { |
- return new MethodInvocation(receiver, name, arguments)..fileOffset = offset; |
+ return astFactory.methodInvocation(receiver, name, arguments) |
+ ..fileOffset = offset; |
} |
} |