Index: pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart b/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart |
index 8b44a31c2c7adedf7b815e2e0ed9977d8d17f32e..4e49d8a95bb7b99468095b20333ebeffe74e4620 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart |
@@ -8,6 +8,7 @@ export 'frontend_accessors.dart' show wrapInvalid; |
import 'frontend_accessors.dart' show Accessor; |
+import 'package:front_end/src/fasta/builder/shadow_ast.dart'; |
import 'package:kernel/ast.dart'; |
import '../errors.dart' show internalError; |
@@ -40,7 +41,7 @@ abstract class BuilderHelper { |
Expression toSuperMethodInvocation(MethodInvocation node); |
- Expression toValue(node); |
+ ShadowExpression toValue(node); |
Member lookupSuperMember(Name name, {bool isSetter: false}); |
@@ -48,15 +49,16 @@ abstract class BuilderHelper { |
finishSend(Object receiver, Arguments arguments, int charOffset); |
- Expression buildCompileTimeError(error, [int charOffset]); |
+ ShadowExpression buildCompileTimeError(error, [int charOffset]); |
Initializer buildCompileTimeErrorIntializer(error, [int charOffset]); |
Expression buildStaticInvocation(Procedure target, Arguments arguments); |
- Expression buildProblemExpression(ProblemBuilder builder, int charOffset); |
+ ShadowExpression buildProblemExpression( |
+ ProblemBuilder builder, int charOffset); |
- Expression throwNoSuchMethodError( |
+ ShadowExpression throwNoSuchMethodError( |
String name, Arguments arguments, int charOffset, |
{bool isSuper: false, isGetter: false, isSetter: false}); |
} |
@@ -72,7 +74,7 @@ abstract class BuilderAccessor implements Accessor { |
String get plainNameForWrite => plainNameForRead; |
- Expression buildForEffect() => buildSimpleRead(); |
+ ShadowExpression buildForEffect() => buildSimpleRead(); |
Initializer buildFieldInitializer( |
Map<String, FieldInitializer> initializers) { |
@@ -96,12 +98,12 @@ abstract class BuilderAccessor implements Accessor { |
/* Expression | BuilderAccessor */ buildPropertyAccess( |
IncompleteSend send, bool isNullAware) { |
if (send is SendAccessor) { |
- return buildMethodInvocation( |
- buildSimpleRead(), send.name, send.arguments, send.charOffset, |
+ return buildMethodInvocation(buildSimpleRead() as Expression, send.name, |
+ send.arguments, send.charOffset, |
isNullAware: isNullAware); |
} else { |
- return PropertyAccessor.make(helper, send.charOffset, buildSimpleRead(), |
- send.name, null, null, isNullAware); |
+ return PropertyAccessor.make(helper, send.charOffset, |
+ buildSimpleRead() as Expression, send.name, null, null, isNullAware); |
} |
} |
@@ -172,7 +174,7 @@ abstract class CompileTimeErrorAccessor implements BuilderAccessor { |
return buildError(); |
} |
- Expression buildSimpleRead() => buildError(); |
+ ShadowExpression buildSimpleRead() => buildError() as ShadowExpression; |
Expression makeInvalidRead() => buildError(); |
@@ -193,9 +195,9 @@ class ThisAccessor extends BuilderAccessor { |
String get plainNameForRead => internalError(isSuper ? "super" : "this"); |
- Expression buildSimpleRead() { |
+ ShadowExpression buildSimpleRead() { |
if (!isSuper) { |
- return new ThisExpression(); |
+ return new ThisExpression() as ShadowExpression; |
} else { |
return helper.buildCompileTimeError( |
"Can't use `super` as an expression.", charOffset); |
@@ -286,7 +288,7 @@ class ThisAccessor extends BuilderAccessor { |
Expression buildAssignmentError() { |
String message = |
isSuper ? "Can't assign to 'super'." : "Can't assign to 'this'."; |
- return helper.buildCompileTimeError(message, charOffset); |
+ return helper.buildCompileTimeError(message, charOffset) as Expression; |
} |
toString() => "ThisAccessor($charOffset${isSuper ? ', super' : ''})"; |
@@ -311,7 +313,7 @@ class IncompleteError extends IncompleteSend with CompileTimeErrorAccessor { |
: super(helper, charOffset, null); |
Expression buildError() { |
- return helper.buildCompileTimeError(error, charOffset); |
+ return helper.buildCompileTimeError(error, charOffset) as Expression; |
} |
} |
@@ -325,7 +327,7 @@ class SendAccessor extends IncompleteSend { |
String get plainNameForRead => name.name; |
- Expression buildSimpleRead() { |
+ ShadowExpression buildSimpleRead() { |
return internalError("Unhandled"); |
} |
@@ -355,7 +357,8 @@ class SendAccessor extends IncompleteSend { |
return buildThrowNoSuchMethodError(arguments); |
} |
if (builder.hasProblem) { |
- result = helper.buildProblemExpression(builder, charOffset); |
+ result = |
+ helper.buildProblemExpression(builder, charOffset) as Expression; |
} else { |
Member target = builder.target; |
if (target != null) { |
@@ -374,7 +377,7 @@ class SendAccessor extends IncompleteSend { |
} |
} else { |
result = buildMethodInvocation( |
- helper.toValue(receiver), name, arguments, charOffset, |
+ helper.toValue(receiver) as Expression, name, arguments, charOffset, |
isNullAware: isNullAware); |
} |
return result; |
@@ -414,7 +417,7 @@ class IncompletePropertyAccessor extends IncompleteSend { |
String get plainNameForRead => name.name; |
- Expression buildSimpleRead() => internalError("Unhandled"); |
+ ShadowExpression buildSimpleRead() => internalError("Unhandled"); |
Expression buildAssignment(Expression value, {bool voidContext: false}) { |
return internalError("Unhandled"); |
@@ -454,8 +457,8 @@ class IncompletePropertyAccessor extends IncompleteSend { |
return new StaticAccessor.fromBuilder( |
helper, builder, charOffset, setter); |
} |
- return PropertyAccessor.make(helper, charOffset, helper.toValue(receiver), |
- name, null, null, isNullAware); |
+ return PropertyAccessor.make(helper, charOffset, |
+ helper.toValue(receiver) as Expression, name, null, null, isNullAware); |
} |
Expression buildNullAwareAssignment(Expression value, DartType type, |
@@ -499,7 +502,7 @@ class IndexAccessor extends kernel.IndexAccessor with BuilderAccessor { |
Expression doInvocation(int charOffset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, charOffset); |
+ buildSimpleRead() as Expression, callName, arguments, charOffset); |
} |
toString() => "IndexAccessor()"; |
@@ -591,8 +594,8 @@ class StaticAccessor extends kernel.StaticAccessor with BuilderAccessor { |
Expression doInvocation(int charOffset, Arguments arguments) { |
if (readTarget == null || isFieldOrGetter(readTarget)) { |
- return buildMethodInvocation(buildSimpleRead(), callName, arguments, |
- charOffset + (readTarget?.name?.name?.length ?? 0)); |
+ return buildMethodInvocation(buildSimpleRead() as Expression, callName, |
+ arguments, charOffset + (readTarget?.name?.name?.length ?? 0)); |
} else { |
return helper.buildStaticInvocation(readTarget, arguments) |
..fileOffset = charOffset; |
@@ -615,7 +618,7 @@ class SuperPropertyAccessor extends kernel.SuperPropertyAccessor |
Expression doInvocation(int charOffset, Arguments arguments) { |
if (getter == null || isFieldOrGetter(getter)) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, charOffset); |
+ buildSimpleRead() as Expression, callName, arguments, charOffset); |
} else { |
return new DirectMethodInvocation(new ThisExpression(), getter, arguments) |
..fileOffset = charOffset; |
@@ -640,7 +643,7 @@ class ThisIndexAccessor extends kernel.ThisIndexAccessor with BuilderAccessor { |
Expression doInvocation(int charOffset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, charOffset); |
+ buildSimpleRead() as Expression, callName, arguments, charOffset); |
} |
toString() => "ThisIndexAccessor()"; |
@@ -662,7 +665,7 @@ class SuperIndexAccessor extends kernel.SuperIndexAccessor |
Expression doInvocation(int charOffset, Arguments arguments) { |
return buildMethodInvocation( |
- buildSimpleRead(), callName, arguments, charOffset); |
+ buildSimpleRead() as Expression, callName, arguments, charOffset); |
} |
toString() => "SuperIndexAccessor()"; |
@@ -725,8 +728,8 @@ class VariableAccessor extends kernel.VariableAccessor with BuilderAccessor { |
Expression doInvocation(int charOffset, 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, |
- charOffset + (variable.name?.length ?? 0)); |
+ return buildMethodInvocation(buildSimpleRead() as Expression, callName, |
+ arguments, charOffset + (variable.name?.length ?? 0)); |
} |
toString() => "VariableAccessor()"; |