| Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| index b55184c1e60ce170fb1e76133779bfa1a9c7bb0e..65ac60bca950346e9523955b0131430787b08cfb 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| @@ -23,6 +23,31 @@ import 'package:front_end/src/fasta/type_inference/type_inferrer.dart';
|
| import 'package:front_end/src/fasta/type_inference/type_promotion.dart';
|
| import 'package:kernel/ast.dart';
|
|
|
| +/// Shadow object for [AsExpression].
|
| +class KernelAsExpression extends AsExpression implements KernelExpression {
|
| + KernelAsExpression(Expression operand, DartType type) : super(operand, type);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [AwaitExpression].
|
| +class KernelAwaitExpression extends AwaitExpression
|
| + implements KernelExpression {
|
| + KernelAwaitExpression(Expression operand) : super(operand);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete shadow object representing a statement block in kernel form.
|
| class KernelBlock extends Block implements KernelStatement {
|
| KernelBlock(List<Statement> statements) : super(statements);
|
| @@ -46,6 +71,95 @@ class KernelBoolLiteral extends BoolLiteral implements KernelExpression {
|
| }
|
| }
|
|
|
| +/// Shadow object for [ConditionalExpression].
|
| +class KernelConditionalExpression extends ConditionalExpression
|
| + implements KernelExpression {
|
| + KernelConditionalExpression(Expression condition, Expression then,
|
| + Expression otherwise, DartType staticType)
|
| + : super(condition, then, otherwise, staticType);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [ConstructorInvocation].
|
| +class KernelConstructorInvocation extends ConstructorInvocation
|
| + implements KernelExpression {
|
| + KernelConstructorInvocation(Constructor target, Arguments arguments,
|
| + {bool isConst: false})
|
| + : super(target, arguments, isConst: isConst);
|
| +
|
| + KernelConstructorInvocation.byReference(
|
| + Reference targetReference, Arguments arguments)
|
| + : super.byReference(targetReference, arguments);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [DirectMethodInvocation].
|
| +class KernelDirectMethodInvocation extends DirectMethodInvocation
|
| + implements KernelExpression {
|
| + KernelDirectMethodInvocation(
|
| + Expression receiver, Procedure target, Arguments arguments)
|
| + : super(receiver, target, arguments);
|
| +
|
| + KernelDirectMethodInvocation.byReference(
|
| + Expression receiver, Reference targetReference, Arguments arguments)
|
| + : super.byReference(receiver, targetReference, arguments);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [DirectPropertyGet].
|
| +class KernelDirectPropertyGet extends DirectPropertyGet
|
| + implements KernelExpression {
|
| + KernelDirectPropertyGet(Expression receiver, Member target)
|
| + : super(receiver, target);
|
| +
|
| + KernelDirectPropertyGet.byReference(
|
| + Expression receiver, Reference targetReference)
|
| + : super.byReference(receiver, targetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [DirectPropertySet].
|
| +class KernelDirectPropertySet extends DirectPropertySet
|
| + implements KernelExpression {
|
| + KernelDirectPropertySet(Expression receiver, Member target, Expression value)
|
| + : super(receiver, target, value);
|
| +
|
| + KernelDirectPropertySet.byReference(
|
| + Expression receiver, Reference targetReference, Expression value)
|
| + : super.byReference(receiver, targetReference, value);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete shadow object representing a double literal in kernel form.
|
| class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression {
|
| KernelDoubleLiteral(double value) : super(value);
|
| @@ -196,6 +310,67 @@ class KernelListLiteral extends ListLiteral implements KernelExpression {
|
| }
|
| }
|
|
|
| +/// Shadow object for [LogicalExpression].
|
| +class KernelLogicalExpression extends LogicalExpression
|
| + implements KernelExpression {
|
| + KernelLogicalExpression(Expression left, String operator, Expression right)
|
| + : super(left, operator, right);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [MapLiteral].
|
| +class KernelMapLiteral extends MapLiteral implements KernelExpression {
|
| + KernelMapLiteral(List<MapEntry> entries,
|
| + {DartType keyType: const DynamicType(),
|
| + DartType valueType: const DynamicType(),
|
| + bool isConst: false})
|
| + : super(entries,
|
| + keyType: keyType, valueType: valueType, isConst: isConst);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [MethodInvocation].
|
| +class KernelMethodInvocation extends MethodInvocation
|
| + implements KernelExpression {
|
| + KernelMethodInvocation(Expression receiver, Name name, Arguments arguments)
|
| + : super(receiver, name, arguments);
|
| +
|
| + KernelMethodInvocation.byReference(Expression receiver, Name name,
|
| + Arguments arguments, Reference interfaceTargetReference)
|
| + : super.byReference(receiver, name, arguments, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [Not].
|
| +class KernelNot extends Not implements KernelExpression {
|
| + KernelNot(Expression operand) : super(operand);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete shadow object representing a null literal in kernel form.
|
| class KernelNullLiteral extends NullLiteral implements KernelExpression {
|
| @override
|
| @@ -206,6 +381,49 @@ class KernelNullLiteral extends NullLiteral implements KernelExpression {
|
| }
|
| }
|
|
|
| +/// Shadow object for [PropertyGet].
|
| +class KernelPropertyGet extends PropertyGet implements KernelExpression {
|
| + KernelPropertyGet(Expression receiver, Name name) : super(receiver, name);
|
| +
|
| + KernelPropertyGet.byReference(
|
| + Expression receiver, Name name, Reference interfaceTargetReference)
|
| + : super.byReference(receiver, name, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [PropertyGet].
|
| +class KernelPropertySet extends PropertySet implements KernelExpression {
|
| + KernelPropertySet(Expression receiver, Name name, Expression value)
|
| + : super(receiver, name, value);
|
| +
|
| + KernelPropertySet.byReference(Expression receiver, Name name,
|
| + Expression value, Reference interfaceTargetReference)
|
| + : super.byReference(receiver, name, value, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [Rethrow].
|
| +class KernelRethrow extends Rethrow implements KernelExpression {
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete shadow object representing a return statement in kernel form.
|
| class KernelReturnStatement extends ReturnStatement implements KernelStatement {
|
| KernelReturnStatement([KernelExpression expression]) : super(expression);
|
| @@ -236,6 +454,40 @@ class KernelStaticGet extends StaticGet implements KernelExpression {
|
| }
|
| }
|
|
|
| +/// Shadow object for [StaticInvocation].
|
| +class KernelStaticInvocation extends StaticInvocation
|
| + implements KernelExpression {
|
| + KernelStaticInvocation(Procedure target, Arguments arguments,
|
| + {bool isConst: false})
|
| + : super(target, arguments, isConst: isConst);
|
| +
|
| + KernelStaticInvocation.byReference(
|
| + Reference targetReference, Arguments arguments)
|
| + : super.byReference(targetReference, arguments);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [StaticSet].
|
| +class KernelStaticSet extends StaticSet implements KernelExpression {
|
| + KernelStaticSet(Member target, Expression value) : super(target, value);
|
| +
|
| + KernelStaticSet.byReference(Reference targetReference, Expression value)
|
| + : super.byReference(targetReference, value);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete shadow object representing a string concatenation in kernel form.
|
| class KernelStringConcatenation extends StringConcatenation
|
| implements KernelExpression {
|
| @@ -260,6 +512,95 @@ class KernelStringLiteral extends StringLiteral implements KernelExpression {
|
| }
|
| }
|
|
|
| +/// Shadow object for [SuperMethodInvocation].
|
| +class KernelSuperMethodInvocation extends SuperMethodInvocation
|
| + implements KernelExpression {
|
| + KernelSuperMethodInvocation(Name name, Arguments arguments,
|
| + [Procedure interfaceTarget])
|
| + : super(name, arguments, interfaceTarget);
|
| +
|
| + KernelSuperMethodInvocation.byReference(
|
| + Name name, Arguments arguments, Reference interfaceTargetReference)
|
| + : super.byReference(name, arguments, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [SuperPropertyGet].
|
| +class KernelSuperPropertyGet extends SuperPropertyGet
|
| + implements KernelExpression {
|
| + KernelSuperPropertyGet(Name name, [Member interfaceTarget])
|
| + : super(name, interfaceTarget);
|
| +
|
| + KernelSuperPropertyGet.byReference(
|
| + Name name, Reference interfaceTargetReference)
|
| + : super.byReference(name, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [SuperPropertySet].
|
| +class KernelSuperPropertySet extends SuperPropertySet
|
| + implements KernelExpression {
|
| + KernelSuperPropertySet(Name name, Expression value, Member interfaceTarget)
|
| + : super(name, value, interfaceTarget);
|
| +
|
| + KernelSuperPropertySet.byReference(
|
| + Name name, Expression value, Reference interfaceTargetReference)
|
| + : super.byReference(name, value, interfaceTargetReference);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [SymbolLiteral].
|
| +class KernelSymbolLiteral extends SymbolLiteral implements KernelExpression {
|
| + KernelSymbolLiteral(String value) : super(value);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [ThisExpression].
|
| +class KernelThisExpression extends ThisExpression implements KernelExpression {
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| +/// Shadow object for [Throw].
|
| +class KernelThrow extends Throw implements KernelExpression {
|
| + KernelThrow(Expression expression) : super(expression);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete implementation of [TypeInferenceEngine] specialized to work with
|
| /// kernel objects.
|
| class KernelTypeInferenceEngine extends TypeInferenceEngineImpl<KernelField> {
|
| @@ -397,6 +738,18 @@ class KernelTypeInferrer extends TypeInferrerImpl<Statement, Expression,
|
| }
|
| }
|
|
|
| +/// Shadow object for [TypeLiteral].
|
| +class KernelTypeLiteral extends TypeLiteral implements KernelExpression {
|
| + KernelTypeLiteral(DartType type) : super(type);
|
| +
|
| + @override
|
| + DartType _inferExpression(
|
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| + // TODO(scheglov): implement.
|
| + return typeNeeded ? const DynamicType() : null;
|
| + }
|
| +}
|
| +
|
| /// Concrete implementation of [TypePromoter] specialized to work with kernel
|
| /// objects.
|
| ///
|
|
|