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

Unified Diff: mojo/public/dart/third_party/analyzer/lib/src/generated/testing/ast_factory.dart

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 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: mojo/public/dart/third_party/analyzer/lib/src/generated/testing/ast_factory.dart
diff --git a/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/ast_factory.dart b/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/ast_factory.dart
new file mode 100644
index 0000000000000000000000000000000000000000..86f1e049ba364d67706b6b12b65861cc92a4a311
--- /dev/null
+++ b/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/ast_factory.dart
@@ -0,0 +1,1255 @@
+// Copyright (c) 2014, 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.
+
+library engine.testing.ast_factory;
+
+import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/src/generated/scanner.dart';
+import 'package:analyzer/src/generated/testing/token_factory.dart';
+import 'package:analyzer/src/generated/utilities_dart.dart';
+
+/**
+ * The class `AstFactory` defines utility methods that can be used to create AST nodes. The
+ * nodes that are created are complete in the sense that all of the tokens that would have been
+ * associated with the nodes by a parser are also created, but the token stream is not constructed.
+ * None of the nodes are resolved.
+ *
+ * The general pattern is for the name of the factory method to be the same as the name of the class
+ * of AST node being created. There are two notable exceptions. The first is for methods creating
+ * nodes that are part of a cascade expression. These methods are all prefixed with 'cascaded'. The
+ * second is places where a shorter name seemed unambiguous and easier to read, such as using
+ * 'identifier' rather than 'prefixedIdentifier', or 'integer' rather than 'integerLiteral'.
+ */
+class AstFactory {
+ static AdjacentStrings adjacentStrings(List<StringLiteral> strings) =>
+ new AdjacentStrings(strings);
+
+ static Annotation annotation(Identifier name) => new Annotation(
+ TokenFactory.tokenFromType(TokenType.AT), name, null, null, null);
+
+ static Annotation annotation2(Identifier name,
+ SimpleIdentifier constructorName, ArgumentList arguments) =>
+ new Annotation(
+ TokenFactory.tokenFromType(TokenType.AT),
+ name,
+ TokenFactory.tokenFromType(TokenType.PERIOD),
+ constructorName,
+ arguments);
+
+ static ArgumentList argumentList([List<Expression> arguments]) =>
+ new ArgumentList(TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ arguments, TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
+
+ static AsExpression asExpression(Expression expression, TypeName type) =>
+ new AsExpression(
+ expression, TokenFactory.tokenFromKeyword(Keyword.AS), type);
+
+ static AssertStatement assertStatement(Expression condition) =>
+ new AssertStatement(
+ TokenFactory.tokenFromKeyword(Keyword.ASSERT),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ condition,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static AssignmentExpression assignmentExpression(Expression leftHandSide,
+ TokenType operator, Expression rightHandSide) =>
+ new AssignmentExpression(
+ leftHandSide, TokenFactory.tokenFromType(operator), rightHandSide);
+
+ static BlockFunctionBody asyncBlockFunctionBody(
+ [List<Statement> statements]) =>
+ new BlockFunctionBody(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "async"),
+ null,
+ block(statements));
+
+ static ExpressionFunctionBody asyncExpressionFunctionBody(
+ Expression expression) =>
+ new ExpressionFunctionBody(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "async"),
+ TokenFactory.tokenFromType(TokenType.FUNCTION),
+ expression,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static BlockFunctionBody asyncGeneratorBlockFunctionBody(
+ [List<Statement> statements]) =>
+ new BlockFunctionBody(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "async"),
+ TokenFactory.tokenFromType(TokenType.STAR),
+ block(statements));
+
+ static AwaitExpression awaitExpression(Expression expression) =>
+ new AwaitExpression(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "await"),
+ expression);
+
+ static BinaryExpression binaryExpression(Expression leftOperand,
+ TokenType operator, Expression rightOperand) =>
+ new BinaryExpression(
+ leftOperand, TokenFactory.tokenFromType(operator), rightOperand);
+
+ static Block block([List<Statement> statements]) => new Block(
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ statements,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static BlockFunctionBody blockFunctionBody(Block block) =>
+ new BlockFunctionBody(null, null, block);
+
+ static BlockFunctionBody blockFunctionBody2([List<Statement> statements]) =>
+ new BlockFunctionBody(null, null, block(statements));
+
+ static BooleanLiteral booleanLiteral(bool value) => new BooleanLiteral(
+ value
+ ? TokenFactory.tokenFromKeyword(Keyword.TRUE)
+ : TokenFactory.tokenFromKeyword(Keyword.FALSE),
+ value);
+
+ static BreakStatement breakStatement() => new BreakStatement(
+ TokenFactory.tokenFromKeyword(Keyword.BREAK),
+ null,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static BreakStatement breakStatement2(String label) => new BreakStatement(
+ TokenFactory.tokenFromKeyword(Keyword.BREAK),
+ identifier3(label),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static IndexExpression cascadedIndexExpression(Expression index) =>
+ new IndexExpression.forCascade(
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD),
+ TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
+ index,
+ TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
+
+ static MethodInvocation cascadedMethodInvocation(String methodName,
+ [List<Expression> arguments]) =>
+ new MethodInvocation(
+ null,
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD),
+ identifier3(methodName),
+ null,
+ argumentList(arguments));
+
+ static PropertyAccess cascadedPropertyAccess(String propertyName) =>
+ new PropertyAccess(
+ null,
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD),
+ identifier3(propertyName));
+
+ static CascadeExpression cascadeExpression(Expression target,
+ [List<Expression> cascadeSections]) =>
+ new CascadeExpression(target, cascadeSections);
+
+ static CatchClause catchClause(String exceptionParameter,
+ [List<Statement> statements]) =>
+ catchClause5(null, exceptionParameter, null, statements);
+
+ static CatchClause catchClause2(
+ String exceptionParameter, String stackTraceParameter,
+ [List<Statement> statements]) =>
+ catchClause5(null, exceptionParameter, stackTraceParameter, statements);
+
+ static CatchClause catchClause3(TypeName exceptionType,
+ [List<Statement> statements]) =>
+ catchClause5(exceptionType, null, null, statements);
+
+ static CatchClause catchClause4(
+ TypeName exceptionType, String exceptionParameter,
+ [List<Statement> statements]) =>
+ catchClause5(exceptionType, exceptionParameter, null, statements);
+
+ static CatchClause catchClause5(TypeName exceptionType,
+ String exceptionParameter, String stackTraceParameter,
+ [List<Statement> statements]) =>
+ new CatchClause(
+ exceptionType == null
+ ? null
+ : TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "on"),
+ exceptionType,
+ exceptionParameter == null
+ ? null
+ : TokenFactory.tokenFromKeyword(Keyword.CATCH),
+ exceptionParameter == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ exceptionParameter == null ? null : identifier3(exceptionParameter),
+ stackTraceParameter == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.COMMA),
+ stackTraceParameter == null ? null : identifier3(stackTraceParameter),
+ exceptionParameter == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ block(statements));
+
+ static ClassDeclaration classDeclaration(
+ Keyword abstractKeyword,
+ String name,
+ TypeParameterList typeParameters,
+ ExtendsClause extendsClause,
+ WithClause withClause,
+ ImplementsClause implementsClause,
+ [List<ClassMember> members]) =>
+ new ClassDeclaration(
+ null,
+ null,
+ abstractKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(abstractKeyword),
+ TokenFactory.tokenFromKeyword(Keyword.CLASS),
+ identifier3(name),
+ typeParameters,
+ extendsClause,
+ withClause,
+ implementsClause,
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ members,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static ClassTypeAlias classTypeAlias(
+ String name,
+ TypeParameterList typeParameters,
+ Keyword abstractKeyword,
+ TypeName superclass,
+ WithClause withClause,
+ ImplementsClause implementsClause) =>
+ new ClassTypeAlias(
+ null,
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.CLASS),
+ identifier3(name),
+ typeParameters,
+ TokenFactory.tokenFromType(TokenType.EQ),
+ abstractKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(abstractKeyword),
+ superclass,
+ withClause,
+ implementsClause,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static CompilationUnit compilationUnit() =>
+ compilationUnit8(null, null, null);
+
+ static CompilationUnit compilationUnit2(
+ List<CompilationUnitMember> declarations) =>
+ compilationUnit8(null, null, declarations);
+
+ static CompilationUnit compilationUnit3(List<Directive> directives) =>
+ compilationUnit8(null, directives, null);
+
+ static CompilationUnit compilationUnit4(List<Directive> directives,
+ List<CompilationUnitMember> declarations) =>
+ compilationUnit8(null, directives, declarations);
+
+ static CompilationUnit compilationUnit5(String scriptTag) =>
+ compilationUnit8(scriptTag, null, null);
+
+ static CompilationUnit compilationUnit6(
+ String scriptTag, List<CompilationUnitMember> declarations) =>
+ compilationUnit8(scriptTag, null, declarations);
+
+ static CompilationUnit compilationUnit7(
+ String scriptTag, List<Directive> directives) =>
+ compilationUnit8(scriptTag, directives, null);
+
+ static CompilationUnit compilationUnit8(
+ String scriptTag,
+ List<Directive> directives,
+ List<CompilationUnitMember> declarations) =>
+ new CompilationUnit(
+ TokenFactory.tokenFromType(TokenType.EOF),
+ scriptTag == null ? null : AstFactory.scriptTag(scriptTag),
+ directives == null ? new List<Directive>() : directives,
+ declarations == null
+ ? new List<CompilationUnitMember>()
+ : declarations,
+ TokenFactory.tokenFromType(TokenType.EOF));
+
+ static ConditionalExpression conditionalExpression(Expression condition,
+ Expression thenExpression, Expression elseExpression) =>
+ new ConditionalExpression(
+ condition,
+ TokenFactory.tokenFromType(TokenType.QUESTION),
+ thenExpression,
+ TokenFactory.tokenFromType(TokenType.COLON),
+ elseExpression);
+
+ static ConstructorDeclaration constructorDeclaration(
+ Identifier returnType,
+ String name,
+ FormalParameterList parameters,
+ List<ConstructorInitializer> initializers) =>
+ new ConstructorDeclaration(
+ null,
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
+ null,
+ null,
+ returnType,
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name == null ? null : identifier3(name),
+ parameters,
+ initializers == null || initializers.isEmpty
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ initializers == null
+ ? new List<ConstructorInitializer>()
+ : initializers,
+ null,
+ emptyFunctionBody());
+
+ static ConstructorDeclaration constructorDeclaration2(
+ Keyword constKeyword,
+ Keyword factoryKeyword,
+ Identifier returnType,
+ String name,
+ FormalParameterList parameters,
+ List<ConstructorInitializer> initializers,
+ FunctionBody body) =>
+ new ConstructorDeclaration(
+ null,
+ null,
+ null,
+ constKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(constKeyword),
+ factoryKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(factoryKeyword),
+ returnType,
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name == null ? null : identifier3(name),
+ parameters,
+ initializers == null || initializers.isEmpty
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ initializers == null
+ ? new List<ConstructorInitializer>()
+ : initializers,
+ null,
+ body);
+
+ static ConstructorFieldInitializer constructorFieldInitializer(
+ bool prefixedWithThis, String fieldName, Expression expression) =>
+ new ConstructorFieldInitializer(
+ prefixedWithThis ? TokenFactory.tokenFromKeyword(Keyword.THIS) : null,
+ prefixedWithThis
+ ? TokenFactory.tokenFromType(TokenType.PERIOD)
+ : null,
+ identifier3(fieldName),
+ TokenFactory.tokenFromType(TokenType.EQ),
+ expression);
+
+ static ConstructorName constructorName(TypeName type, String name) =>
+ new ConstructorName(
+ type,
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name == null ? null : identifier3(name));
+
+ static ContinueStatement continueStatement([String label]) =>
+ new ContinueStatement(
+ TokenFactory.tokenFromKeyword(Keyword.CONTINUE),
+ label == null ? null : identifier3(label),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static DeclaredIdentifier declaredIdentifier(
+ Keyword keyword, String identifier) =>
+ declaredIdentifier2(keyword, null, identifier);
+
+ static DeclaredIdentifier declaredIdentifier2(
+ Keyword keyword, TypeName type, String identifier) =>
+ new DeclaredIdentifier(
+ null,
+ null,
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type,
+ identifier3(identifier));
+
+ static DeclaredIdentifier declaredIdentifier3(String identifier) =>
+ declaredIdentifier2(Keyword.VAR, null, identifier);
+
+ static DeclaredIdentifier declaredIdentifier4(
+ TypeName type, String identifier) =>
+ declaredIdentifier2(null, type, identifier);
+
+ static DoStatement doStatement(Statement body, Expression condition) =>
+ new DoStatement(
+ TokenFactory.tokenFromKeyword(Keyword.DO),
+ body,
+ TokenFactory.tokenFromKeyword(Keyword.WHILE),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ condition,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static DoubleLiteral doubleLiteral(double value) =>
+ new DoubleLiteral(TokenFactory.tokenFromString(value.toString()), value);
+
+ static EmptyFunctionBody emptyFunctionBody() =>
+ new EmptyFunctionBody(TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static EmptyStatement emptyStatement() =>
+ new EmptyStatement(TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static EnumDeclaration enumDeclaration(
+ SimpleIdentifier name, List<EnumConstantDeclaration> constants) =>
+ new EnumDeclaration(
+ null,
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.ENUM),
+ name,
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ constants,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static EnumDeclaration enumDeclaration2(
+ String name, List<String> constantNames) {
+ int count = constantNames.length;
+ List<EnumConstantDeclaration> constants =
+ new List<EnumConstantDeclaration>(count);
+ for (int i = 0; i < count; i++) {
+ constants[i] = new EnumConstantDeclaration(
+ null, null, identifier3(constantNames[i]));
+ }
+ return enumDeclaration(identifier3(name), constants);
+ }
+
+ static ExportDirective exportDirective(List<Annotation> metadata, String uri,
+ [List<Combinator> combinators]) =>
+ new ExportDirective(
+ null,
+ metadata,
+ TokenFactory.tokenFromKeyword(Keyword.EXPORT),
+ string2(uri),
+ combinators,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static ExportDirective exportDirective2(String uri,
+ [List<Combinator> combinators]) =>
+ exportDirective(null, uri, combinators);
+
+ static ExpressionFunctionBody expressionFunctionBody(Expression expression) =>
+ new ExpressionFunctionBody(
+ null,
+ TokenFactory.tokenFromType(TokenType.FUNCTION),
+ expression,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static ExpressionStatement expressionStatement(Expression expression) =>
+ new ExpressionStatement(
+ expression, TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static ExtendsClause extendsClause(TypeName type) =>
+ new ExtendsClause(TokenFactory.tokenFromKeyword(Keyword.EXTENDS), type);
+
+ static FieldDeclaration fieldDeclaration(bool isStatic, Keyword keyword,
+ TypeName type, List<VariableDeclaration> variables) =>
+ new FieldDeclaration(
+ null,
+ null,
+ isStatic ? TokenFactory.tokenFromKeyword(Keyword.STATIC) : null,
+ variableDeclarationList(keyword, type, variables),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static FieldDeclaration fieldDeclaration2(bool isStatic, Keyword keyword,
+ List<VariableDeclaration> variables) =>
+ fieldDeclaration(isStatic, keyword, null, variables);
+
+ static FieldFormalParameter fieldFormalParameter(
+ Keyword keyword, TypeName type, String identifier,
+ [FormalParameterList parameterList]) =>
+ new FieldFormalParameter(
+ null,
+ null,
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type,
+ TokenFactory.tokenFromKeyword(Keyword.THIS),
+ TokenFactory.tokenFromType(TokenType.PERIOD),
+ identifier3(identifier),
+ null,
+ parameterList);
+
+ static FieldFormalParameter fieldFormalParameter2(String identifier) =>
+ fieldFormalParameter(null, null, identifier);
+
+ static ForEachStatement forEachStatement(DeclaredIdentifier loopVariable,
+ Expression iterator, Statement body) =>
+ new ForEachStatement.withDeclaration(
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.FOR),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ loopVariable,
+ TokenFactory.tokenFromKeyword(Keyword.IN),
+ iterator,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ body);
+
+ static ForEachStatement forEachStatement2(
+ SimpleIdentifier identifier, Expression iterator, Statement body) =>
+ new ForEachStatement.withReference(
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.FOR),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ identifier,
+ TokenFactory.tokenFromKeyword(Keyword.IN),
+ iterator,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ body);
+
+ static FormalParameterList formalParameterList(
+ [List<FormalParameter> parameters]) =>
+ new FormalParameterList(
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ parameters,
+ null,
+ null,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
+
+ static ForStatement forStatement(Expression initialization,
+ Expression condition, List<Expression> updaters, Statement body) =>
+ new ForStatement(
+ TokenFactory.tokenFromKeyword(Keyword.FOR),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ null,
+ initialization,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ condition,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ updaters,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ body);
+
+ static ForStatement forStatement2(VariableDeclarationList variableList,
+ Expression condition, List<Expression> updaters, Statement body) =>
+ new ForStatement(
+ TokenFactory.tokenFromKeyword(Keyword.FOR),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ variableList,
+ null,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ condition,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ updaters,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ body);
+
+ static FunctionDeclaration functionDeclaration(TypeName type, Keyword keyword,
+ String name, FunctionExpression functionExpression) =>
+ new FunctionDeclaration(
+ null,
+ null,
+ null,
+ type,
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ identifier3(name),
+ functionExpression);
+
+ static FunctionDeclarationStatement functionDeclarationStatement(
+ TypeName type,
+ Keyword keyword,
+ String name,
+ FunctionExpression functionExpression) =>
+ new FunctionDeclarationStatement(
+ functionDeclaration(type, keyword, name, functionExpression));
+
+ static FunctionExpression functionExpression() =>
+ new FunctionExpression(null, formalParameterList(), blockFunctionBody2());
+
+ static FunctionExpression functionExpression2(
+ FormalParameterList parameters, FunctionBody body) =>
+ new FunctionExpression(null, parameters, body);
+
+ static FunctionExpression functionExpression3(
+ TypeParameterList typeParameters,
+ FormalParameterList parameters,
+ FunctionBody body) =>
+ new FunctionExpression(typeParameters, parameters, body);
+
+ static FunctionExpressionInvocation functionExpressionInvocation(
+ Expression function,
+ [List<Expression> arguments]) =>
+ functionExpressionInvocation2(function, null, arguments);
+
+ static FunctionExpressionInvocation functionExpressionInvocation2(
+ Expression function,
+ [TypeArgumentList typeArguments,
+ List<Expression> arguments]) =>
+ new FunctionExpressionInvocation(
+ function, typeArguments, argumentList(arguments));
+
+ static FunctionTypedFormalParameter functionTypedFormalParameter(
+ TypeName returnType, String identifier,
+ [List<FormalParameter> parameters]) =>
+ new FunctionTypedFormalParameter(null, null, returnType,
+ identifier3(identifier), null, formalParameterList(parameters));
+
+ static HideCombinator hideCombinator(List<SimpleIdentifier> identifiers) =>
+ new HideCombinator(TokenFactory.tokenFromString("hide"), identifiers);
+
+ static HideCombinator hideCombinator2(List<String> identifiers) =>
+ new HideCombinator(
+ TokenFactory.tokenFromString("hide"), identifierList(identifiers));
+
+ static PrefixedIdentifier identifier(
+ SimpleIdentifier prefix, SimpleIdentifier identifier) =>
+ new PrefixedIdentifier(
+ prefix, TokenFactory.tokenFromType(TokenType.PERIOD), identifier);
+
+ static SimpleIdentifier identifier3(String lexeme) => new SimpleIdentifier(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, lexeme));
+
+ static PrefixedIdentifier identifier4(
+ String prefix, SimpleIdentifier identifier) =>
+ new PrefixedIdentifier(identifier3(prefix),
+ TokenFactory.tokenFromType(TokenType.PERIOD), identifier);
+
+ static PrefixedIdentifier identifier5(String prefix, String identifier) =>
+ new PrefixedIdentifier(
+ identifier3(prefix),
+ TokenFactory.tokenFromType(TokenType.PERIOD),
+ identifier3(identifier));
+
+ static List<SimpleIdentifier> identifierList(List<String> identifiers) {
+ if (identifiers == null) {
+ return null;
+ }
+ return identifiers
+ .map((String identifier) => identifier3(identifier))
+ .toList();
+ }
+
+ static IfStatement ifStatement(
+ Expression condition, Statement thenStatement) =>
+ ifStatement2(condition, thenStatement, null);
+
+ static IfStatement ifStatement2(Expression condition, Statement thenStatement,
+ Statement elseStatement) =>
+ new IfStatement(
+ TokenFactory.tokenFromKeyword(Keyword.IF),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ condition,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ thenStatement,
+ elseStatement == null
+ ? null
+ : TokenFactory.tokenFromKeyword(Keyword.ELSE),
+ elseStatement);
+
+ static ImplementsClause implementsClause(List<TypeName> types) =>
+ new ImplementsClause(
+ TokenFactory.tokenFromKeyword(Keyword.IMPLEMENTS), types);
+
+ static ImportDirective importDirective(
+ List<Annotation> metadata, String uri, bool isDeferred, String prefix,
+ [List<Combinator> combinators]) =>
+ new ImportDirective(
+ null,
+ metadata,
+ TokenFactory.tokenFromKeyword(Keyword.IMPORT),
+ string2(uri),
+ !isDeferred ? null : TokenFactory.tokenFromKeyword(Keyword.DEFERRED),
+ prefix == null ? null : TokenFactory.tokenFromKeyword(Keyword.AS),
+ prefix == null ? null : identifier3(prefix),
+ combinators,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static ImportDirective importDirective2(
+ String uri, bool isDeferred, String prefix,
+ [List<Combinator> combinators]) =>
+ importDirective(null, uri, isDeferred, prefix, combinators);
+
+ static ImportDirective importDirective3(String uri, String prefix,
+ [List<Combinator> combinators]) =>
+ importDirective(null, uri, false, prefix, combinators);
+
+ static IndexExpression indexExpression(Expression array, Expression index) =>
+ new IndexExpression.forTarget(
+ array,
+ TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
+ index,
+ TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
+
+ static InstanceCreationExpression instanceCreationExpression(
+ Keyword keyword, ConstructorName name,
+ [List<Expression> arguments]) =>
+ new InstanceCreationExpression(
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ name,
+ argumentList(arguments));
+
+ static InstanceCreationExpression instanceCreationExpression2(
+ Keyword keyword, TypeName type,
+ [List<Expression> arguments]) =>
+ instanceCreationExpression3(keyword, type, null, arguments);
+
+ static InstanceCreationExpression instanceCreationExpression3(
+ Keyword keyword, TypeName type, String identifier,
+ [List<Expression> arguments]) =>
+ instanceCreationExpression(
+ keyword,
+ new ConstructorName(
+ type,
+ identifier == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ identifier == null ? null : identifier3(identifier)),
+ arguments);
+
+ static IntegerLiteral integer(int value) => new IntegerLiteral(
+ TokenFactory.tokenFromTypeAndString(TokenType.INT, value.toString()),
+ value);
+
+ static InterpolationExpression interpolationExpression(
+ Expression expression) =>
+ new InterpolationExpression(
+ TokenFactory.tokenFromType(TokenType.STRING_INTERPOLATION_EXPRESSION),
+ expression,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static InterpolationExpression interpolationExpression2(String identifier) =>
+ new InterpolationExpression(
+ TokenFactory.tokenFromType(TokenType.STRING_INTERPOLATION_IDENTIFIER),
+ identifier3(identifier),
+ null);
+
+ static InterpolationString interpolationString(
+ String contents, String value) =>
+ new InterpolationString(TokenFactory.tokenFromString(contents), value);
+
+ static IsExpression isExpression(
+ Expression expression, bool negated, TypeName type) =>
+ new IsExpression(expression, TokenFactory.tokenFromKeyword(Keyword.IS),
+ negated ? TokenFactory.tokenFromType(TokenType.BANG) : null, type);
+
+ static Label label(SimpleIdentifier label) =>
+ new Label(label, TokenFactory.tokenFromType(TokenType.COLON));
+
+ static Label label2(String label) => AstFactory.label(identifier3(label));
+
+ static LabeledStatement labeledStatement(
+ List<Label> labels, Statement statement) =>
+ new LabeledStatement(labels, statement);
+
+ static LibraryDirective libraryDirective(
+ List<Annotation> metadata, LibraryIdentifier libraryName) =>
+ new LibraryDirective(
+ null,
+ metadata,
+ TokenFactory.tokenFromKeyword(Keyword.LIBRARY),
+ libraryName,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static LibraryDirective libraryDirective2(String libraryName) =>
+ libraryDirective(
+ new List<Annotation>(), libraryIdentifier2([libraryName]));
+
+ static LibraryIdentifier libraryIdentifier(
+ List<SimpleIdentifier> components) =>
+ new LibraryIdentifier(components);
+
+ static LibraryIdentifier libraryIdentifier2(List<String> components) {
+ return new LibraryIdentifier(identifierList(components));
+ }
+
+ static List list(List<Object> elements) {
+ return elements;
+ }
+
+ static ListLiteral listLiteral([List<Expression> elements]) =>
+ listLiteral2(null, null, elements);
+
+ static ListLiteral listLiteral2(
+ Keyword keyword, TypeArgumentList typeArguments,
+ [List<Expression> elements]) =>
+ new ListLiteral(
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ typeArguments,
+ TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
+ elements,
+ TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
+
+ static MapLiteral mapLiteral(Keyword keyword, TypeArgumentList typeArguments,
+ [List<MapLiteralEntry> entries]) =>
+ new MapLiteral(
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ typeArguments,
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ entries,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static MapLiteral mapLiteral2([List<MapLiteralEntry> entries]) =>
+ mapLiteral(null, null, entries);
+
+ static MapLiteralEntry mapLiteralEntry(String key, Expression value) =>
+ new MapLiteralEntry(
+ string2(key), TokenFactory.tokenFromType(TokenType.COLON), value);
+
+ static MethodDeclaration methodDeclaration(
+ Keyword modifier,
+ TypeName returnType,
+ Keyword property,
+ Keyword operator,
+ SimpleIdentifier name,
+ FormalParameterList parameters) =>
+ new MethodDeclaration(
+ null,
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType,
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name,
+ null,
+ parameters,
+ emptyFunctionBody());
+
+ static MethodDeclaration methodDeclaration2(
+ Keyword modifier,
+ TypeName returnType,
+ Keyword property,
+ Keyword operator,
+ SimpleIdentifier name,
+ FormalParameterList parameters,
+ FunctionBody body) =>
+ new MethodDeclaration(
+ null,
+ null,
+ null,
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType,
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name,
+ null,
+ parameters,
+ body);
+
+ static MethodDeclaration methodDeclaration3(
+ Keyword modifier,
+ TypeName returnType,
+ Keyword property,
+ Keyword operator,
+ SimpleIdentifier name,
+ TypeParameterList typeParameters,
+ FormalParameterList parameters,
+ FunctionBody body) =>
+ new MethodDeclaration(
+ null,
+ null,
+ null,
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType,
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name,
+ typeParameters,
+ parameters,
+ body);
+
+ static MethodInvocation methodInvocation(Expression target, String methodName,
+ [List<Expression> arguments,
+ TokenType operator = TokenType.PERIOD]) =>
+ new MethodInvocation(
+ target,
+ target == null ? null : TokenFactory.tokenFromType(operator),
+ identifier3(methodName),
+ null,
+ argumentList(arguments));
+
+ static MethodInvocation methodInvocation2(String methodName,
+ [List<Expression> arguments]) =>
+ methodInvocation(null, methodName, arguments);
+
+ static MethodInvocation methodInvocation3(
+ Expression target, String methodName, TypeArgumentList typeArguments,
+ [List<Expression> arguments,
+ TokenType operator = TokenType.PERIOD]) =>
+ new MethodInvocation(
+ target,
+ target == null ? null : TokenFactory.tokenFromType(operator),
+ identifier3(methodName),
+ typeArguments,
+ argumentList(arguments));
+
+ static NamedExpression namedExpression(Label label, Expression expression) =>
+ new NamedExpression(label, expression);
+
+ static NamedExpression namedExpression2(
+ String label, Expression expression) =>
+ namedExpression(label2(label), expression);
+
+ static DefaultFormalParameter namedFormalParameter(
+ NormalFormalParameter parameter, Expression expression) =>
+ new DefaultFormalParameter(
+ parameter,
+ ParameterKind.NAMED,
+ expression == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.COLON),
+ expression);
+
+ static NativeClause nativeClause(String nativeCode) => new NativeClause(
+ TokenFactory.tokenFromString("native"), string2(nativeCode));
+
+ static NativeFunctionBody nativeFunctionBody(String nativeMethodName) =>
+ new NativeFunctionBody(
+ TokenFactory.tokenFromString("native"),
+ string2(nativeMethodName),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static NullLiteral nullLiteral() =>
+ new NullLiteral(TokenFactory.tokenFromKeyword(Keyword.NULL));
+
+ static ParenthesizedExpression parenthesizedExpression(
+ Expression expression) =>
+ new ParenthesizedExpression(
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ expression,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
+
+ static PartDirective partDirective(List<Annotation> metadata, String url) =>
+ new PartDirective(
+ null,
+ metadata,
+ TokenFactory.tokenFromKeyword(Keyword.PART),
+ string2(url),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static PartDirective partDirective2(String url) =>
+ partDirective(new List<Annotation>(), url);
+
+ static PartOfDirective partOfDirective(LibraryIdentifier libraryName) =>
+ partOfDirective2(new List<Annotation>(), libraryName);
+
+ static PartOfDirective partOfDirective2(
+ List<Annotation> metadata, LibraryIdentifier libraryName) =>
+ new PartOfDirective(
+ null,
+ metadata,
+ TokenFactory.tokenFromKeyword(Keyword.PART),
+ TokenFactory.tokenFromString("of"),
+ libraryName,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static DefaultFormalParameter positionalFormalParameter(
+ NormalFormalParameter parameter, Expression expression) =>
+ new DefaultFormalParameter(
+ parameter,
+ ParameterKind.POSITIONAL,
+ expression == null ? null : TokenFactory.tokenFromType(TokenType.EQ),
+ expression);
+
+ static PostfixExpression postfixExpression(
+ Expression expression, TokenType operator) =>
+ new PostfixExpression(expression, TokenFactory.tokenFromType(operator));
+
+ static PrefixExpression prefixExpression(
+ TokenType operator, Expression expression) =>
+ new PrefixExpression(TokenFactory.tokenFromType(operator), expression);
+
+ static PropertyAccess propertyAccess(
+ Expression target, SimpleIdentifier propertyName) =>
+ new PropertyAccess(
+ target, TokenFactory.tokenFromType(TokenType.PERIOD), propertyName);
+
+ static PropertyAccess propertyAccess2(Expression target, String propertyName,
+ [TokenType operator = TokenType.PERIOD]) =>
+ new PropertyAccess(target, TokenFactory.tokenFromType(operator),
+ identifier3(propertyName));
+
+ static RedirectingConstructorInvocation redirectingConstructorInvocation(
+ [List<Expression> arguments]) =>
+ redirectingConstructorInvocation2(null, arguments);
+
+ static RedirectingConstructorInvocation redirectingConstructorInvocation2(
+ String constructorName,
+ [List<Expression> arguments]) =>
+ new RedirectingConstructorInvocation(
+ TokenFactory.tokenFromKeyword(Keyword.THIS),
+ constructorName == null
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ constructorName == null ? null : identifier3(constructorName),
+ argumentList(arguments));
+
+ static RethrowExpression rethrowExpression() =>
+ new RethrowExpression(TokenFactory.tokenFromKeyword(Keyword.RETHROW));
+
+ static ReturnStatement returnStatement() => returnStatement2(null);
+
+ static ReturnStatement returnStatement2(Expression expression) =>
+ new ReturnStatement(TokenFactory.tokenFromKeyword(Keyword.RETURN),
+ expression, TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static ScriptTag scriptTag(String scriptTag) =>
+ new ScriptTag(TokenFactory.tokenFromString(scriptTag));
+
+ static ShowCombinator showCombinator(List<SimpleIdentifier> identifiers) =>
+ new ShowCombinator(TokenFactory.tokenFromString("show"), identifiers);
+
+ static ShowCombinator showCombinator2(List<String> identifiers) =>
+ new ShowCombinator(
+ TokenFactory.tokenFromString("show"), identifierList(identifiers));
+
+ static SimpleFormalParameter simpleFormalParameter(
+ Keyword keyword, String parameterName) =>
+ simpleFormalParameter2(keyword, null, parameterName);
+
+ static SimpleFormalParameter simpleFormalParameter2(
+ Keyword keyword, TypeName type, String parameterName) =>
+ new SimpleFormalParameter(
+ null,
+ null,
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type,
+ identifier3(parameterName));
+
+ static SimpleFormalParameter simpleFormalParameter3(String parameterName) =>
+ simpleFormalParameter2(null, null, parameterName);
+
+ static SimpleFormalParameter simpleFormalParameter4(
+ TypeName type, String parameterName) =>
+ simpleFormalParameter2(null, type, parameterName);
+
+ static StringInterpolation string([List<InterpolationElement> elements]) =>
+ new StringInterpolation(elements);
+
+ static SimpleStringLiteral string2(String content) => new SimpleStringLiteral(
+ TokenFactory.tokenFromString("'$content'"), content);
+
+ static SuperConstructorInvocation superConstructorInvocation(
+ [List<Expression> arguments]) =>
+ superConstructorInvocation2(null, arguments);
+
+ static SuperConstructorInvocation superConstructorInvocation2(String name,
+ [List<Expression> arguments]) =>
+ new SuperConstructorInvocation(
+ TokenFactory.tokenFromKeyword(Keyword.SUPER),
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name == null ? null : identifier3(name),
+ argumentList(arguments));
+
+ static SuperExpression superExpression() =>
+ new SuperExpression(TokenFactory.tokenFromKeyword(Keyword.SUPER));
+
+ static SwitchCase switchCase(
+ Expression expression, List<Statement> statements) =>
+ switchCase2(new List<Label>(), expression, statements);
+
+ static SwitchCase switchCase2(List<Label> labels, Expression expression,
+ List<Statement> statements) =>
+ new SwitchCase(labels, TokenFactory.tokenFromKeyword(Keyword.CASE),
+ expression, TokenFactory.tokenFromType(TokenType.COLON), statements);
+
+ static SwitchDefault switchDefault(
+ List<Label> labels, List<Statement> statements) =>
+ new SwitchDefault(labels, TokenFactory.tokenFromKeyword(Keyword.DEFAULT),
+ TokenFactory.tokenFromType(TokenType.COLON), statements);
+
+ static SwitchDefault switchDefault2(List<Statement> statements) =>
+ switchDefault(new List<Label>(), statements);
+
+ static SwitchStatement switchStatement(
+ Expression expression, List<SwitchMember> members) =>
+ new SwitchStatement(
+ TokenFactory.tokenFromKeyword(Keyword.SWITCH),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ expression,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ members,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+
+ static SymbolLiteral symbolLiteral(List<String> components) {
+ List<Token> identifierList = new List<Token>();
+ for (String component in components) {
+ identifierList.add(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, component));
+ }
+ return new SymbolLiteral(
+ TokenFactory.tokenFromType(TokenType.HASH), identifierList);
+ }
+
+ static BlockFunctionBody syncBlockFunctionBody(
+ [List<Statement> statements]) =>
+ new BlockFunctionBody(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "sync"),
+ null,
+ block(statements));
+
+ static BlockFunctionBody syncGeneratorBlockFunctionBody(
+ [List<Statement> statements]) =>
+ new BlockFunctionBody(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "sync"),
+ TokenFactory.tokenFromType(TokenType.STAR),
+ block(statements));
+
+ static ThisExpression thisExpression() =>
+ new ThisExpression(TokenFactory.tokenFromKeyword(Keyword.THIS));
+
+ static ThrowExpression throwExpression() => throwExpression2(null);
+
+ static ThrowExpression throwExpression2(Expression expression) =>
+ new ThrowExpression(
+ TokenFactory.tokenFromKeyword(Keyword.THROW), expression);
+
+ static TopLevelVariableDeclaration topLevelVariableDeclaration(
+ Keyword keyword,
+ TypeName type,
+ List<VariableDeclaration> variables) =>
+ new TopLevelVariableDeclaration(
+ null,
+ null,
+ variableDeclarationList(keyword, type, variables),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static TopLevelVariableDeclaration topLevelVariableDeclaration2(
+ Keyword keyword, List<VariableDeclaration> variables) =>
+ new TopLevelVariableDeclaration(
+ null,
+ null,
+ variableDeclarationList(keyword, null, variables),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static TryStatement tryStatement(Block body, Block finallyClause) =>
+ tryStatement3(body, new List<CatchClause>(), finallyClause);
+
+ static TryStatement tryStatement2(
+ Block body, List<CatchClause> catchClauses) =>
+ tryStatement3(body, catchClauses, null);
+
+ static TryStatement tryStatement3(
+ Block body, List<CatchClause> catchClauses, Block finallyClause) =>
+ new TryStatement(
+ TokenFactory.tokenFromKeyword(Keyword.TRY),
+ body,
+ catchClauses,
+ finallyClause == null
+ ? null
+ : TokenFactory.tokenFromKeyword(Keyword.FINALLY),
+ finallyClause);
+
+ static FunctionTypeAlias typeAlias(TypeName returnType, String name,
+ TypeParameterList typeParameters, FormalParameterList parameters) =>
+ new FunctionTypeAlias(
+ null,
+ null,
+ TokenFactory.tokenFromKeyword(Keyword.TYPEDEF),
+ returnType,
+ identifier3(name),
+ typeParameters,
+ parameters,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static TypeArgumentList typeArgumentList(List<TypeName> typeNames) {
+ if (typeNames == null || typeNames.length == 0) {
+ return null;
+ }
+ return new TypeArgumentList(TokenFactory.tokenFromType(TokenType.LT),
+ typeNames, TokenFactory.tokenFromType(TokenType.GT));
+ }
+
+ /**
+ * Create a type name whose name has been resolved to the given [element] and
+ * whose type has been resolved to the type of the given element.
+ *
+ * <b>Note:</b> This method does not correctly handle class elements that have
+ * type parameters.
+ */
+ static TypeName typeName(ClassElement element, [List<TypeName> arguments]) {
+ SimpleIdentifier name = identifier3(element.name);
+ name.staticElement = element;
+ TypeName typeName = typeName3(name, arguments);
+ typeName.type = element.type;
+ return typeName;
+ }
+
+ static TypeName typeName3(Identifier name, [List<TypeName> arguments]) =>
+ new TypeName(name, typeArgumentList(arguments));
+
+ static TypeName typeName4(String name, [List<TypeName> arguments]) =>
+ new TypeName(identifier3(name), typeArgumentList(arguments));
+
+ static TypeParameter typeParameter(String name) =>
+ new TypeParameter(null, null, identifier3(name), null, null);
+
+ static TypeParameter typeParameter2(String name, TypeName bound) =>
+ new TypeParameter(null, null, identifier3(name),
+ TokenFactory.tokenFromKeyword(Keyword.EXTENDS), bound);
+
+ static TypeParameterList typeParameterList([List<String> typeNames]) {
+ List<TypeParameter> typeParameters = null;
+ if (typeNames != null && !typeNames.isEmpty) {
+ typeParameters = new List<TypeParameter>();
+ for (String typeName in typeNames) {
+ typeParameters.add(typeParameter(typeName));
+ }
+ }
+ return new TypeParameterList(TokenFactory.tokenFromType(TokenType.LT),
+ typeParameters, TokenFactory.tokenFromType(TokenType.GT));
+ }
+
+ static VariableDeclaration variableDeclaration(String name) =>
+ new VariableDeclaration(identifier3(name), null, null);
+
+ static VariableDeclaration variableDeclaration2(
+ String name, Expression initializer) =>
+ new VariableDeclaration(identifier3(name),
+ TokenFactory.tokenFromType(TokenType.EQ), initializer);
+
+ static VariableDeclarationList variableDeclarationList(Keyword keyword,
+ TypeName type, List<VariableDeclaration> variables) =>
+ new VariableDeclarationList(
+ null,
+ null,
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type,
+ variables);
+
+ static VariableDeclarationList variableDeclarationList2(
+ Keyword keyword, List<VariableDeclaration> variables) =>
+ variableDeclarationList(keyword, null, variables);
+
+ static VariableDeclarationStatement variableDeclarationStatement(
+ Keyword keyword,
+ TypeName type,
+ List<VariableDeclaration> variables) =>
+ new VariableDeclarationStatement(
+ variableDeclarationList(keyword, type, variables),
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static VariableDeclarationStatement variableDeclarationStatement2(
+ Keyword keyword, List<VariableDeclaration> variables) =>
+ variableDeclarationStatement(keyword, null, variables);
+
+ static WhileStatement whileStatement(Expression condition, Statement body) =>
+ new WhileStatement(
+ TokenFactory.tokenFromKeyword(Keyword.WHILE),
+ TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+ condition,
+ TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+ body);
+
+ static WithClause withClause(List<TypeName> types) =>
+ new WithClause(TokenFactory.tokenFromKeyword(Keyword.WITH), types);
+
+ static YieldStatement yieldEachStatement(Expression expression) =>
+ new YieldStatement(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "yield"),
+ TokenFactory.tokenFromType(TokenType.STAR),
+ expression,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+
+ static YieldStatement yieldStatement(Expression expression) =>
+ new YieldStatement(
+ TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "yield"),
+ null,
+ expression,
+ TokenFactory.tokenFromType(TokenType.SEMICOLON));
+}

Powered by Google App Engine
This is Rietveld 408576698