Index: pkg/front_end/lib/src/fasta/builder/ast_factory.dart |
diff --git a/pkg/front_end/lib/src/fasta/builder/ast_factory.dart b/pkg/front_end/lib/src/fasta/builder/ast_factory.dart |
index 09faabcc0c8e8cb4ef80a1c2e0eb00fef5da7479..f4ca9614af7509fecc30ffe1b85f97b85044578a 100644 |
--- a/pkg/front_end/lib/src/fasta/builder/ast_factory.dart |
+++ b/pkg/front_end/lib/src/fasta/builder/ast_factory.dart |
@@ -35,12 +35,34 @@ import 'package:kernel/ast.dart'; |
/// shadow-ify [DartType], since analyzer ASTs need to be able to record the |
/// exact tokens that were used to specify a type. |
abstract class AstFactory<V> { |
+ /// Creates an `as` expression. |
+ AsExpression asExpression(Expression operand, Token operator, DartType type); |
+ |
+ /// Creates an `await` expression. |
+ AwaitExpression awaitExpression(Token keyword, Expression operand); |
+ |
/// Creates a statement block. |
Block block(List<Statement> statements, Token beginToken); |
/// Creates a boolean literal. |
BoolLiteral boolLiteral(bool value, Token token); |
+ /// Creates a constructor invocation. |
+ ConstructorInvocation constructorInvocation( |
+ Constructor target, Arguments arguments, |
+ {bool isConst: false}); |
+ |
+ /// Creates a direct method invocation. |
+ DirectMethodInvocation directMethodInvocation( |
+ Expression receiver, Procedure target, Arguments arguments); |
+ |
+ /// Creates a direct property get. |
+ DirectPropertyGet directPropertyGet(Expression receiver, Member target); |
+ |
+ /// Creates a direct property get. |
+ DirectPropertySet directPropertySet( |
+ Expression receiver, Member target, Expression value); |
+ |
/// Creates a double literal. |
DoubleLiteral doubleLiteral(double value, Token token); |
@@ -68,15 +90,38 @@ abstract class AstFactory<V> { |
ListLiteral listLiteral(List<Expression> expressions, DartType typeArgument, |
bool isConst, Token token); |
+ /// Creates a logical expression in for of `x && y` or `x || y`. |
+ LogicalExpression logicalExpression( |
+ Expression left, String operator, Expression right); |
+ |
+ /// Creates a map literal expression. |
+ /// |
+ /// If the map literal did not have an explicitly declared type argument, |
+ /// [keyType] and [valueType] should be `null`. |
+ MapLiteral mapLiteral( |
+ Token beginToken, Token constKeyword, List<MapEntry> entries, |
+ {DartType keyType: const DynamicType(), |
+ DartType valueType: const DynamicType()}); |
+ |
+ /// Create an expression of form `!x`. |
+ Not not(Token token, Expression operand); |
+ |
/// Creates a null literal expression. |
NullLiteral nullLiteral(Token token); |
+ /// Create a `rethrow` expression. |
+ Rethrow rethrowExpression(Token keyword); |
+ |
/// Creates a return statement. |
Statement returnStatement(Expression expression, Token token); |
/// Creates a read of a static variable. |
StaticGet staticGet(Member readTarget, Token token); |
+ /// Creates a static invocation. |
+ StaticInvocation staticInvocation(Procedure target, Arguments arguments, |
+ {bool isConst: false}); |
+ |
/// Creates a string concatenation. |
StringConcatenation stringConcatenation( |
List<Expression> expressions, Token token); |
@@ -84,6 +129,26 @@ abstract class AstFactory<V> { |
/// Creates a string literal. |
StringLiteral stringLiteral(String value, Token token); |
+ /// Creates a super method invocation. |
+ SuperMethodInvocation superMethodInvocation( |
+ Token beginToken, Name name, Arguments arguments, |
+ [Procedure interfaceTarget]); |
+ |
+ /// Create an expression of form `super.field`. |
+ SuperPropertyGet superPropertyGet(Name name, [Member interfaceTarget]); |
+ |
+ /// Create an expression of form `#foo.bar`. |
+ SymbolLiteral symbolLiteral(Token hashToken, String value); |
+ |
+ /// Create an expression of form `this`. |
+ ThisExpression thisExpression(Token keyword); |
+ |
+ /// Create a `throw` expression. |
+ Throw throwExpression(Token keyword, Expression expression); |
+ |
+ /// Create a type literal expression. |
+ TypeLiteral typeLiteral(DartType type); |
+ |
/// Creates a variable declaration statement declaring one variable. |
/// |
/// TODO(paulberry): analyzer makes a distinction between a single variable |
@@ -102,6 +167,6 @@ abstract class AstFactory<V> { |
bool isConst: false}); |
/// Creates a read of a local variable. |
- variableGet(VariableDeclaration variable, TypePromotionFact<V> fact, |
- TypePromotionScope scope, Token token); |
+ VariableGet variableGet(VariableDeclaration variable, |
+ TypePromotionFact<V> fact, TypePromotionScope scope, Token token); |
} |