| 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()";
|
|
|