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. |
/// |