Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: pkg/front_end/lib/src/fasta/builder/ast_factory.dart

Issue 2904673003: Remove AstFactory from the front end. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
-}

Powered by Google App Engine
This is Rietveld 408576698