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 |
deleted file mode 100644 |
index 47f13c16bc254c73019044f275c2ba9058ad62e5..0000000000000000000000000000000000000000 |
--- a/pkg/front_end/lib/src/fasta/builder/ast_factory.dart |
+++ /dev/null |
@@ -1,201 +0,0 @@ |
-// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-import 'package:front_end/src/fasta/scanner.dart' show Token; |
-import 'package:front_end/src/fasta/type_inference/type_promotion.dart'; |
-import 'package:kernel/ast.dart'; |
- |
-/// An abstract class containing factory methods that create AST objects. |
-/// |
-/// Itended for use by [BodyBuilder] so that it can create either analyzer or |
-/// kernel ASTs depending on which concrete factory it is connected to. |
-/// |
-/// This class is defined in terms of the builder's shadow AST mixins (which are |
-/// shared between kernel and analyzer shadow AST representations). |
-/// |
-/// Note that the analyzer AST representation closely parallels Dart syntax, |
-/// whereas the kernel AST representation is desugared. The factory methods in |
-/// this class correspond to the full language (prior to desugaring). If |
-/// desugaring is needed, it will be performed by the concrete factory class. |
-/// |
-/// TODO(paulberry): add missing methods. |
-/// |
-/// TODO(paulberry): modify [BodyBuilder] so that it creates all kernel objects |
-/// using this interface. |
-/// |
-/// TODO(paulberry): change the API to use tokens rather than charOffset, since |
-/// that's what analyzer ASTs need. Note that analyzer needs multiple tokens |
-/// for many AST constructs, not just one. Note also that for kernel codegen |
-/// we want to be very careful not to keep tokens around too long, so consider |
-/// having a `toLocation` method on AstFactory that changes tokens to an |
-/// abstract type (`int` for kernel, `Token` for analyzer). |
-/// |
-/// TODO(paulberry): in order to interface with analyzer, we'll need to |
-/// 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 [Arguments] data structure. |
- Arguments arguments(List<Expression> positional, |
- {List<DartType> types, List<NamedExpression> named}); |
- |
- /// 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 conditional expression. |
- ConditionalExpression conditionalExpression(Expression condition, |
- Expression thenExpression, Expression elseExpression); |
- |
- /// 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); |
- |
- /// Creates an expression statement. |
- ExpressionStatement expressionStatement(Expression expression); |
- |
- /// Creates a function expression. |
- FunctionExpression functionExpression(FunctionNode function, Token token); |
- |
- /// Creates an `if` statement. |
- Statement ifStatement( |
- Expression condition, Statement thenPart, Statement elsePart); |
- |
- /// Creates an integer literal. |
- IntLiteral intLiteral(int value, Token token); |
- |
- /// Creates an `is` expression. |
- Expression isExpression( |
- Expression expression, DartType type, Token token, bool isInverted); |
- |
- /// Creates a list literal expression. |
- /// |
- /// If the list literal did not have an explicitly declared type argument, |
- /// [typeArgument] should be `null`. |
- 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()}); |
- |
- /// Creates a method invocation of form `x.foo(y)`. |
- MethodInvocation methodInvocation( |
- Expression receiver, Name name, Arguments arguments, |
- [Procedure interfaceTarget]); |
- |
- /// Create an expression of form `!x`. |
- Not not(Token token, Expression operand); |
- |
- /// Creates a null literal expression. |
- NullLiteral nullLiteral(Token token); |
- |
- /// Creates a read of a property. |
- PropertyGet propertyGet(Expression receiver, Name name, |
- [Member interfaceTarget]); |
- |
- /// Creates a write of a property. |
- PropertySet propertySet(Expression receiver, Name name, Expression value, |
- [Member interfaceTarget]); |
- |
- /// Create a `rethrow` expression. |
- Rethrow rethrowExpression(Token keyword); |
- |
- /// Creates a return statement. |
- Statement returnStatement(Expression expression, Token token); |
- |
- /// Updates an [Arguments] data structure with the given generic [types]. |
- /// Should only be used when [types] were specified explicitly. |
- void setExplicitArgumentTypes(Arguments arguments, List<DartType> types); |
- |
- /// 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); |
- |
- /// 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 |
- /// declaration and a variable declaration statement (which can contain |
- /// multiple variable declarations). Currently this API only makes sense for |
- /// kernel, which desugars each variable declaration to its own statement. |
- /// |
- /// If the variable declaration did not have an explicitly declared type, |
- /// [type] should be `null`. |
- VariableDeclaration variableDeclaration( |
- String name, Token token, int functionNestingLevel, |
- {DartType type, |
- Expression initializer, |
- Token equalsToken, |
- bool isFinal: false, |
- bool isConst: false, |
- bool isLocalFunction: false}); |
- |
- /// Creates a read of a local variable. |
- VariableGet variableGet(VariableDeclaration variable, |
- TypePromotionFact<V> fact, TypePromotionScope scope, Token token); |
- |
- /// Creates a write of a local variable. |
- VariableSet variableSet(VariableDeclaration variable, Expression value); |
-} |