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)); |
+} |