| Index: pkg/analyzer/test/src/dart/ast/utilities_test.dart
|
| diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
|
| index 7e83cf7bfe083856b2d70d0316e68b4417ae9436..7b4d93a7d9567be514fd84ccf6f2f999e8f2bc01 100644
|
| --- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
|
| +++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
|
| @@ -29,6 +29,7 @@ main() {
|
| defineReflectiveTests(NodeLocator2Test);
|
| defineReflectiveTests(ResolutionCopierTest);
|
| defineReflectiveTests(ToSourceVisitorTest);
|
| + defineReflectiveTests(ToSourceVisitor2Test);
|
| });
|
| }
|
|
|
| @@ -1109,6 +1110,2241 @@ class ResolutionCopierTest extends EngineTestCase {
|
| }
|
|
|
| @reflectiveTest
|
| +class ToSourceVisitor2Test extends EngineTestCase {
|
| + void test_visitAdjacentStrings() {
|
| + _assertSource(
|
| + "'a' 'b'",
|
| + AstFactory.adjacentStrings(
|
| + [AstFactory.string2("a"), AstFactory.string2("b")]));
|
| + }
|
| +
|
| + void test_visitAnnotation_constant() {
|
| + _assertSource("@A", AstFactory.annotation(AstFactory.identifier3("A")));
|
| + }
|
| +
|
| + void test_visitAnnotation_constructor() {
|
| + _assertSource(
|
| + "@A.c()",
|
| + AstFactory.annotation2(AstFactory.identifier3("A"),
|
| + AstFactory.identifier3("c"), AstFactory.argumentList()));
|
| + }
|
| +
|
| + void test_visitArgumentList() {
|
| + _assertSource(
|
| + "(a, b)",
|
| + AstFactory.argumentList(
|
| + [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
|
| + }
|
| +
|
| + void test_visitAsExpression() {
|
| + _assertSource(
|
| + "e as T",
|
| + AstFactory.asExpression(
|
| + AstFactory.identifier3("e"), AstFactory.typeName4("T")));
|
| + }
|
| +
|
| + void test_visitAssertStatement() {
|
| + _assertSource(
|
| + "assert (a);", AstFactory.assertStatement(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitAssertStatement_withMessage() {
|
| + _assertSource(
|
| + "assert (a, b);",
|
| + AstFactory.assertStatement(
|
| + AstFactory.identifier3("a"), AstFactory.identifier3('b')));
|
| + }
|
| +
|
| + void test_visitAssignmentExpression() {
|
| + _assertSource(
|
| + "a = b",
|
| + AstFactory.assignmentExpression(AstFactory.identifier3("a"),
|
| + TokenType.EQ, AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitAwaitExpression() {
|
| + _assertSource(
|
| + "await e", AstFactory.awaitExpression(AstFactory.identifier3("e")));
|
| + }
|
| +
|
| + void test_visitBinaryExpression() {
|
| + _assertSource(
|
| + "a + b",
|
| + AstFactory.binaryExpression(AstFactory.identifier3("a"), TokenType.PLUS,
|
| + AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitBlock_empty() {
|
| + _assertSource("{}", AstFactory.block());
|
| + }
|
| +
|
| + void test_visitBlock_nonEmpty() {
|
| + _assertSource(
|
| + "{break; break;}",
|
| + AstFactory
|
| + .block([AstFactory.breakStatement(), AstFactory.breakStatement()]));
|
| + }
|
| +
|
| + void test_visitBlockFunctionBody_async() {
|
| + _assertSource("async {}", AstFactory.asyncBlockFunctionBody());
|
| + }
|
| +
|
| + void test_visitBlockFunctionBody_async_star() {
|
| + _assertSource("async* {}", AstFactory.asyncGeneratorBlockFunctionBody());
|
| + }
|
| +
|
| + void test_visitBlockFunctionBody_simple() {
|
| + _assertSource("{}", AstFactory.blockFunctionBody2());
|
| + }
|
| +
|
| + void test_visitBlockFunctionBody_sync() {
|
| + _assertSource("sync {}", AstFactory.syncBlockFunctionBody());
|
| + }
|
| +
|
| + void test_visitBlockFunctionBody_sync_star() {
|
| + _assertSource("sync* {}", AstFactory.syncGeneratorBlockFunctionBody());
|
| + }
|
| +
|
| + void test_visitBooleanLiteral_false() {
|
| + _assertSource("false", AstFactory.booleanLiteral(false));
|
| + }
|
| +
|
| + void test_visitBooleanLiteral_true() {
|
| + _assertSource("true", AstFactory.booleanLiteral(true));
|
| + }
|
| +
|
| + void test_visitBreakStatement_label() {
|
| + _assertSource("break l;", AstFactory.breakStatement2("l"));
|
| + }
|
| +
|
| + void test_visitBreakStatement_noLabel() {
|
| + _assertSource("break;", AstFactory.breakStatement());
|
| + }
|
| +
|
| + void test_visitCascadeExpression_field() {
|
| + _assertSource(
|
| + "a..b..c",
|
| + AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
|
| + AstFactory.cascadedPropertyAccess("b"),
|
| + AstFactory.cascadedPropertyAccess("c")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCascadeExpression_index() {
|
| + _assertSource(
|
| + "a..[0]..[1]",
|
| + AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
|
| + AstFactory.cascadedIndexExpression(AstFactory.integer(0)),
|
| + AstFactory.cascadedIndexExpression(AstFactory.integer(1))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCascadeExpression_method() {
|
| + _assertSource(
|
| + "a..b()..c()",
|
| + AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
|
| + AstFactory.cascadedMethodInvocation("b"),
|
| + AstFactory.cascadedMethodInvocation("c")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCatchClause_catch_noStack() {
|
| + _assertSource("catch (e) {}", AstFactory.catchClause("e"));
|
| + }
|
| +
|
| + void test_visitCatchClause_catch_stack() {
|
| + _assertSource("catch (e, s) {}", AstFactory.catchClause2("e", "s"));
|
| + }
|
| +
|
| + void test_visitCatchClause_on() {
|
| + _assertSource(
|
| + "on E {}", AstFactory.catchClause3(AstFactory.typeName4("E")));
|
| + }
|
| +
|
| + void test_visitCatchClause_on_catch() {
|
| + _assertSource("on E catch (e) {}",
|
| + AstFactory.catchClause4(AstFactory.typeName4("E"), "e"));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_abstract() {
|
| + _assertSource(
|
| + "abstract class C {}",
|
| + AstFactory.classDeclaration(
|
| + Keyword.ABSTRACT, "C", null, null, null, null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_empty() {
|
| + _assertSource("class C {}",
|
| + AstFactory.classDeclaration(null, "C", null, null, null, null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_extends() {
|
| + _assertSource(
|
| + "class C extends A {}",
|
| + AstFactory.classDeclaration(null, "C", null,
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")), null, null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_extends_implements() {
|
| + _assertSource(
|
| + "class C extends A implements B {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + null,
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + null,
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_extends_with() {
|
| + _assertSource(
|
| + "class C extends A with M {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + null,
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + AstFactory.withClause([AstFactory.typeName4("M")]),
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_extends_with_implements() {
|
| + _assertSource(
|
| + "class C extends A with M implements B {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + null,
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + AstFactory.withClause([AstFactory.typeName4("M")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_implements() {
|
| + _assertSource(
|
| + "class C implements B {}",
|
| + AstFactory.classDeclaration(null, "C", null, null, null,
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_multipleMember() {
|
| + _assertSource(
|
| + "class C {var a; var b;}",
|
| + AstFactory.classDeclaration(null, "C", null, null, null, null, [
|
| + AstFactory.fieldDeclaration2(
|
| + false, Keyword.VAR, [AstFactory.variableDeclaration("a")]),
|
| + AstFactory.fieldDeclaration2(
|
| + false, Keyword.VAR, [AstFactory.variableDeclaration("b")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters() {
|
| + _assertSource(
|
| + "class C<E> {}",
|
| + AstFactory.classDeclaration(
|
| + null, "C", AstFactory.typeParameterList(["E"]), null, null, null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters_extends() {
|
| + _assertSource(
|
| + "class C<E> extends A {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + null,
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters_extends_implements() {
|
| + _assertSource(
|
| + "class C<E> extends A implements B {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + null,
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters_extends_with() {
|
| + _assertSource(
|
| + "class C<E> extends A with M {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + AstFactory.withClause([AstFactory.typeName4("M")]),
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters_extends_with_implements() {
|
| + _assertSource(
|
| + "class C<E> extends A with M implements B {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + AstFactory.extendsClause(AstFactory.typeName4("A")),
|
| + AstFactory.withClause([AstFactory.typeName4("M")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_parameters_implements() {
|
| + _assertSource(
|
| + "class C<E> implements B {}",
|
| + AstFactory.classDeclaration(
|
| + null,
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + null,
|
| + null,
|
| + AstFactory.implementsClause([AstFactory.typeName4("B")])));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_singleMember() {
|
| + _assertSource(
|
| + "class C {var a;}",
|
| + AstFactory.classDeclaration(null, "C", null, null, null, null, [
|
| + AstFactory.fieldDeclaration2(
|
| + false, Keyword.VAR, [AstFactory.variableDeclaration("a")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitClassDeclaration_withMetadata() {
|
| + ClassDeclaration declaration =
|
| + AstFactory.classDeclaration(null, "C", null, null, null, null);
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated class C {}", declaration);
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_abstract() {
|
| + _assertSource(
|
| + "abstract class C = S with M1;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + null,
|
| + Keyword.ABSTRACT,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_abstract_implements() {
|
| + _assertSource(
|
| + "abstract class C = S with M1 implements I;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + null,
|
| + Keyword.ABSTRACT,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("I")])));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_generic() {
|
| + _assertSource(
|
| + "class C<E> = S<E> with M1<E>;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + null,
|
| + AstFactory.typeName4("S", [AstFactory.typeName4("E")]),
|
| + AstFactory.withClause([
|
| + AstFactory.typeName4("M1", [AstFactory.typeName4("E")])
|
| + ]),
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_implements() {
|
| + _assertSource(
|
| + "class C = S with M1 implements I;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + null,
|
| + null,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("I")])));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_minimal() {
|
| + _assertSource(
|
| + "class C = S with M1;",
|
| + AstFactory.classTypeAlias("C", null, null, AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]), null));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_parameters_abstract() {
|
| + _assertSource(
|
| + "abstract class C<E> = S with M1;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + Keyword.ABSTRACT,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + null));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_parameters_abstract_implements() {
|
| + _assertSource(
|
| + "abstract class C<E> = S with M1 implements I;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + Keyword.ABSTRACT,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("I")])));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_parameters_implements() {
|
| + _assertSource(
|
| + "class C<E> = S with M1 implements I;",
|
| + AstFactory.classTypeAlias(
|
| + "C",
|
| + AstFactory.typeParameterList(["E"]),
|
| + null,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + AstFactory.implementsClause([AstFactory.typeName4("I")])));
|
| + }
|
| +
|
| + void test_visitClassTypeAlias_withMetadata() {
|
| + ClassTypeAlias declaration = AstFactory.classTypeAlias(
|
| + "C",
|
| + null,
|
| + null,
|
| + AstFactory.typeName4("S"),
|
| + AstFactory.withClause([AstFactory.typeName4("M1")]),
|
| + null);
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated class C = S with M1;", declaration);
|
| + }
|
| +
|
| + void test_visitComment() {
|
| + _assertSource(
|
| + "",
|
| + Comment.createBlockComment(
|
| + <Token>[TokenFactory.tokenFromString("/* comment */")]));
|
| + }
|
| +
|
| + void test_visitCommentReference() {
|
| + _assertSource("", new CommentReference(null, AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_declaration() {
|
| + _assertSource(
|
| + "var a;",
|
| + AstFactory.compilationUnit2([
|
| + AstFactory.topLevelVariableDeclaration2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("a")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_directive() {
|
| + _assertSource("library l;",
|
| + AstFactory.compilationUnit3([AstFactory.libraryDirective2("l")]));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_directive_declaration() {
|
| + _assertSource(
|
| + "library l; var a;",
|
| + AstFactory.compilationUnit4([
|
| + AstFactory.libraryDirective2("l")
|
| + ], [
|
| + AstFactory.topLevelVariableDeclaration2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("a")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_empty() {
|
| + _assertSource("", AstFactory.compilationUnit());
|
| + }
|
| +
|
| + void test_visitCompilationUnit_script() {
|
| + _assertSource(
|
| + "!#/bin/dartvm", AstFactory.compilationUnit5("!#/bin/dartvm"));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_script_declaration() {
|
| + _assertSource(
|
| + "!#/bin/dartvm var a;",
|
| + AstFactory.compilationUnit6("!#/bin/dartvm", [
|
| + AstFactory.topLevelVariableDeclaration2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("a")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_script_directive() {
|
| + _assertSource(
|
| + "!#/bin/dartvm library l;",
|
| + AstFactory.compilationUnit7(
|
| + "!#/bin/dartvm", [AstFactory.libraryDirective2("l")]));
|
| + }
|
| +
|
| + void test_visitCompilationUnit_script_directives_declarations() {
|
| + _assertSource(
|
| + "!#/bin/dartvm library l; var a;",
|
| + AstFactory.compilationUnit8("!#/bin/dartvm", [
|
| + AstFactory.libraryDirective2("l")
|
| + ], [
|
| + AstFactory.topLevelVariableDeclaration2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("a")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitConditionalExpression() {
|
| + _assertSource(
|
| + "a ? b : c",
|
| + AstFactory.conditionalExpression(AstFactory.identifier3("a"),
|
| + AstFactory.identifier3("b"), AstFactory.identifier3("c")));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_const() {
|
| + _assertSource(
|
| + "const C() {}",
|
| + AstFactory.constructorDeclaration2(
|
| + Keyword.CONST,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList(),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_external() {
|
| + _assertSource(
|
| + "external C();",
|
| + AstFactory.constructorDeclaration(AstFactory.identifier3("C"), null,
|
| + AstFactory.formalParameterList(), null));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_minimal() {
|
| + _assertSource(
|
| + "C() {}",
|
| + AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList(),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_multipleInitializers() {
|
| + _assertSource(
|
| + "C() : a = b, c = d {}",
|
| + AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList(),
|
| + [
|
| + AstFactory.constructorFieldInitializer(
|
| + false, "a", AstFactory.identifier3("b")),
|
| + AstFactory.constructorFieldInitializer(
|
| + false, "c", AstFactory.identifier3("d"))
|
| + ],
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_multipleParameters() {
|
| + _assertSource(
|
| + "C(var a, var b) {}",
|
| + AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "b")
|
| + ]),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_named() {
|
| + _assertSource(
|
| + "C.m() {}",
|
| + AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + "m",
|
| + AstFactory.formalParameterList(),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_singleInitializer() {
|
| + _assertSource(
|
| + "C() : a = b {}",
|
| + AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList(),
|
| + [
|
| + AstFactory.constructorFieldInitializer(
|
| + false, "a", AstFactory.identifier3("b"))
|
| + ],
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitConstructorDeclaration_withMetadata() {
|
| + ConstructorDeclaration declaration = AstFactory.constructorDeclaration2(
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("C"),
|
| + null,
|
| + AstFactory.formalParameterList(),
|
| + null,
|
| + AstFactory.blockFunctionBody2());
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated C() {}", declaration);
|
| + }
|
| +
|
| + void test_visitConstructorFieldInitializer_withoutThis() {
|
| + _assertSource(
|
| + "a = b",
|
| + AstFactory.constructorFieldInitializer(
|
| + false, "a", AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitConstructorFieldInitializer_withThis() {
|
| + _assertSource(
|
| + "this.a = b",
|
| + AstFactory.constructorFieldInitializer(
|
| + true, "a", AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitConstructorName_named_prefix() {
|
| + _assertSource("p.C.n",
|
| + AstFactory.constructorName(AstFactory.typeName4("p.C.n"), null));
|
| + }
|
| +
|
| + void test_visitConstructorName_unnamed_noPrefix() {
|
| + _assertSource(
|
| + "C", AstFactory.constructorName(AstFactory.typeName4("C"), null));
|
| + }
|
| +
|
| + void test_visitConstructorName_unnamed_prefix() {
|
| + _assertSource(
|
| + "p.C",
|
| + AstFactory.constructorName(
|
| + AstFactory.typeName3(AstFactory.identifier5("p", "C")), null));
|
| + }
|
| +
|
| + void test_visitContinueStatement_label() {
|
| + _assertSource("continue l;", AstFactory.continueStatement("l"));
|
| + }
|
| +
|
| + void test_visitContinueStatement_noLabel() {
|
| + _assertSource("continue;", AstFactory.continueStatement());
|
| + }
|
| +
|
| + void test_visitDefaultFormalParameter_annotation() {
|
| + DefaultFormalParameter parameter = AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("p"), AstFactory.integer(0));
|
| + parameter.metadata.add(AstFactory.annotation(AstFactory.identifier3("A")));
|
| + _assertSource('@A p = 0', parameter);
|
| + }
|
| +
|
| + void test_visitDefaultFormalParameter_named_noValue() {
|
| + _assertSource(
|
| + "p",
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("p"), null));
|
| + }
|
| +
|
| + void test_visitDefaultFormalParameter_named_value() {
|
| + _assertSource(
|
| + "p : 0",
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("p"), AstFactory.integer(0)));
|
| + }
|
| +
|
| + void test_visitDefaultFormalParameter_positional_noValue() {
|
| + _assertSource(
|
| + "p",
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("p"), null));
|
| + }
|
| +
|
| + void test_visitDefaultFormalParameter_positional_value() {
|
| + _assertSource(
|
| + "p = 0",
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("p"), AstFactory.integer(0)));
|
| + }
|
| +
|
| + void test_visitDoStatement() {
|
| + _assertSource(
|
| + "do {} while (c);",
|
| + AstFactory.doStatement(
|
| + AstFactory.block(), AstFactory.identifier3("c")));
|
| + }
|
| +
|
| + void test_visitDoubleLiteral() {
|
| + _assertSource("4.2", AstFactory.doubleLiteral(4.2));
|
| + }
|
| +
|
| + void test_visitEmptyFunctionBody() {
|
| + _assertSource(";", AstFactory.emptyFunctionBody());
|
| + }
|
| +
|
| + void test_visitEmptyStatement() {
|
| + _assertSource(";", AstFactory.emptyStatement());
|
| + }
|
| +
|
| + void test_visitEnumDeclaration_multiple() {
|
| + _assertSource(
|
| + "enum E {ONE, TWO}", AstFactory.enumDeclaration2("E", ["ONE", "TWO"]));
|
| + }
|
| +
|
| + void test_visitEnumDeclaration_single() {
|
| + _assertSource("enum E {ONE}", AstFactory.enumDeclaration2("E", ["ONE"]));
|
| + }
|
| +
|
| + void test_visitExportDirective_combinator() {
|
| + _assertSource(
|
| + "export 'a.dart' show A;",
|
| + AstFactory.exportDirective2("a.dart", [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitExportDirective_combinators() {
|
| + _assertSource(
|
| + "export 'a.dart' show A hide B;",
|
| + AstFactory.exportDirective2("a.dart", [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")]),
|
| + AstFactory.hideCombinator([AstFactory.identifier3("B")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitExportDirective_minimal() {
|
| + _assertSource("export 'a.dart';", AstFactory.exportDirective2("a.dart"));
|
| + }
|
| +
|
| + void test_visitExportDirective_withMetadata() {
|
| + ExportDirective directive = AstFactory.exportDirective2("a.dart");
|
| + directive.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated export 'a.dart';", directive);
|
| + }
|
| +
|
| + void test_visitExpressionFunctionBody_async() {
|
| + _assertSource("async => a;",
|
| + AstFactory.asyncExpressionFunctionBody(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitExpressionFunctionBody_simple() {
|
| + _assertSource("=> a;",
|
| + AstFactory.expressionFunctionBody(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitExpressionStatement() {
|
| + _assertSource(
|
| + "a;", AstFactory.expressionStatement(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitExtendsClause() {
|
| + _assertSource(
|
| + "extends C", AstFactory.extendsClause(AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitFieldDeclaration_instance() {
|
| + _assertSource(
|
| + "var a;",
|
| + AstFactory.fieldDeclaration2(
|
| + false, Keyword.VAR, [AstFactory.variableDeclaration("a")]));
|
| + }
|
| +
|
| + void test_visitFieldDeclaration_static() {
|
| + _assertSource(
|
| + "static var a;",
|
| + AstFactory.fieldDeclaration2(
|
| + true, Keyword.VAR, [AstFactory.variableDeclaration("a")]));
|
| + }
|
| +
|
| + void test_visitFieldDeclaration_withMetadata() {
|
| + FieldDeclaration declaration = AstFactory.fieldDeclaration2(
|
| + false, Keyword.VAR, [AstFactory.variableDeclaration("a")]);
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated var a;", declaration);
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_annotation() {
|
| + FieldFormalParameter parameter = AstFactory.fieldFormalParameter2('f');
|
| + parameter.metadata.add(AstFactory.annotation(AstFactory.identifier3("A")));
|
| + _assertSource('@A this.f', parameter);
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_functionTyped() {
|
| + _assertSource(
|
| + "A this.a(b)",
|
| + AstFactory.fieldFormalParameter(
|
| + null,
|
| + AstFactory.typeName4("A"),
|
| + "a",
|
| + AstFactory.formalParameterList(
|
| + [AstFactory.simpleFormalParameter3("b")])));
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_functionTyped_typeParameters() {
|
| + _assertSource(
|
| + "A this.a<E, F>(b)",
|
| + new FieldFormalParameter(
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.typeName4('A'),
|
| + TokenFactory.tokenFromKeyword(Keyword.THIS),
|
| + TokenFactory.tokenFromType(TokenType.PERIOD),
|
| + AstFactory.identifier3('a'),
|
| + AstFactory.typeParameterList(['E', 'F']),
|
| + AstFactory.formalParameterList(
|
| + [AstFactory.simpleFormalParameter3("b")])));
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_keyword() {
|
| + _assertSource(
|
| + "var this.a", AstFactory.fieldFormalParameter(Keyword.VAR, null, "a"));
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_keywordAndType() {
|
| + _assertSource(
|
| + "final A this.a",
|
| + AstFactory.fieldFormalParameter(
|
| + Keyword.FINAL, AstFactory.typeName4("A"), "a"));
|
| + }
|
| +
|
| + void test_visitFieldFormalParameter_type() {
|
| + _assertSource("A this.a",
|
| + AstFactory.fieldFormalParameter(null, AstFactory.typeName4("A"), "a"));
|
| + }
|
| +
|
| + void test_visitForEachStatement_declared() {
|
| + _assertSource(
|
| + "for (var a in b) {}",
|
| + AstFactory.forEachStatement(AstFactory.declaredIdentifier3("a"),
|
| + AstFactory.identifier3("b"), AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForEachStatement_variable() {
|
| + _assertSource(
|
| + "for (a in b) {}",
|
| + new ForEachStatement.withReference(
|
| + null,
|
| + TokenFactory.tokenFromKeyword(Keyword.FOR),
|
| + TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
|
| + AstFactory.identifier3("a"),
|
| + TokenFactory.tokenFromKeyword(Keyword.IN),
|
| + AstFactory.identifier3("b"),
|
| + TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForEachStatement_variable_await() {
|
| + _assertSource(
|
| + "await for (a in b) {}",
|
| + new ForEachStatement.withReference(
|
| + TokenFactory.tokenFromString("await"),
|
| + TokenFactory.tokenFromKeyword(Keyword.FOR),
|
| + TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
|
| + AstFactory.identifier3("a"),
|
| + TokenFactory.tokenFromKeyword(Keyword.IN),
|
| + AstFactory.identifier3("b"),
|
| + TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_empty() {
|
| + _assertSource("()", AstFactory.formalParameterList());
|
| + }
|
| +
|
| + void test_visitFormalParameterList_n() {
|
| + _assertSource(
|
| + "({a : 0})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_nn() {
|
| + _assertSource(
|
| + "({a : 0, b : 1})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0)),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_p() {
|
| + _assertSource(
|
| + "([a = 0])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_pp() {
|
| + _assertSource(
|
| + "([a = 0, b = 1])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0)),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_r() {
|
| + _assertSource(
|
| + "(a)",
|
| + AstFactory
|
| + .formalParameterList([AstFactory.simpleFormalParameter3("a")]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rn() {
|
| + _assertSource(
|
| + "(a, {b : 1})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rnn() {
|
| + _assertSource(
|
| + "(a, {b : 1, c : 2})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1)),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(2))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rp() {
|
| + _assertSource(
|
| + "(a, [b = 1])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rpp() {
|
| + _assertSource(
|
| + "(a, [b = 1, c = 2])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1)),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(2))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rr() {
|
| + _assertSource(
|
| + "(a, b)",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.simpleFormalParameter3("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rrn() {
|
| + _assertSource(
|
| + "(a, b, {c : 3})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.simpleFormalParameter3("b"),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rrnn() {
|
| + _assertSource(
|
| + "(a, b, {c : 3, d : 4})",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.simpleFormalParameter3("b"),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3)),
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter3("d"), AstFactory.integer(4))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rrp() {
|
| + _assertSource(
|
| + "(a, b, [c = 3])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.simpleFormalParameter3("b"),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitFormalParameterList_rrpp() {
|
| + _assertSource(
|
| + "(a, b, [c = 3, d = 4])",
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter3("a"),
|
| + AstFactory.simpleFormalParameter3("b"),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3)),
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter3("d"), AstFactory.integer(4))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitForStatement_c() {
|
| + _assertSource(
|
| + "for (; c;) {}",
|
| + AstFactory.forStatement(
|
| + null, AstFactory.identifier3("c"), null, AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_cu() {
|
| + _assertSource(
|
| + "for (; c; u) {}",
|
| + AstFactory.forStatement(null, AstFactory.identifier3("c"),
|
| + [AstFactory.identifier3("u")], AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_e() {
|
| + _assertSource(
|
| + "for (e;;) {}",
|
| + AstFactory.forStatement(
|
| + AstFactory.identifier3("e"), null, null, AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_ec() {
|
| + _assertSource(
|
| + "for (e; c;) {}",
|
| + AstFactory.forStatement(AstFactory.identifier3("e"),
|
| + AstFactory.identifier3("c"), null, AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_ecu() {
|
| + _assertSource(
|
| + "for (e; c; u) {}",
|
| + AstFactory.forStatement(
|
| + AstFactory.identifier3("e"),
|
| + AstFactory.identifier3("c"),
|
| + [AstFactory.identifier3("u")],
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_eu() {
|
| + _assertSource(
|
| + "for (e;; u) {}",
|
| + AstFactory.forStatement(AstFactory.identifier3("e"), null,
|
| + [AstFactory.identifier3("u")], AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_i() {
|
| + _assertSource(
|
| + "for (var i;;) {}",
|
| + AstFactory.forStatement2(
|
| + AstFactory.variableDeclarationList2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("i")]),
|
| + null,
|
| + null,
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_ic() {
|
| + _assertSource(
|
| + "for (var i; c;) {}",
|
| + AstFactory.forStatement2(
|
| + AstFactory.variableDeclarationList2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("i")]),
|
| + AstFactory.identifier3("c"),
|
| + null,
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_icu() {
|
| + _assertSource(
|
| + "for (var i; c; u) {}",
|
| + AstFactory.forStatement2(
|
| + AstFactory.variableDeclarationList2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("i")]),
|
| + AstFactory.identifier3("c"),
|
| + [AstFactory.identifier3("u")],
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_iu() {
|
| + _assertSource(
|
| + "for (var i;; u) {}",
|
| + AstFactory.forStatement2(
|
| + AstFactory.variableDeclarationList2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("i")]),
|
| + null,
|
| + [AstFactory.identifier3("u")],
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitForStatement_u() {
|
| + _assertSource(
|
| + "for (;; u) {}",
|
| + AstFactory.forStatement(
|
| + null, null, [AstFactory.identifier3("u")], AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_external() {
|
| + FunctionDeclaration functionDeclaration = AstFactory.functionDeclaration(
|
| + null,
|
| + null,
|
| + "f",
|
| + AstFactory.functionExpression2(
|
| + AstFactory.formalParameterList(), AstFactory.emptyFunctionBody()));
|
| + functionDeclaration.externalKeyword =
|
| + TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| + _assertSource("external f();", functionDeclaration);
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_getter() {
|
| + _assertSource(
|
| + "get f() {}",
|
| + AstFactory.functionDeclaration(
|
| + null, Keyword.GET, "f", AstFactory.functionExpression()));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_local_blockBody() {
|
| + FunctionDeclaration f = AstFactory.functionDeclaration(
|
| + null, null, "f", AstFactory.functionExpression());
|
| + FunctionDeclarationStatement fStatement =
|
| + new FunctionDeclarationStatement(f);
|
| + _assertSource(
|
| + "main() {f() {} 42;}",
|
| + AstFactory.functionDeclaration(
|
| + null,
|
| + null,
|
| + "main",
|
| + AstFactory.functionExpression2(
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2([
|
| + fStatement,
|
| + AstFactory.expressionStatement(AstFactory.integer(42))
|
| + ]))));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_local_expressionBody() {
|
| + FunctionDeclaration f = AstFactory.functionDeclaration(
|
| + null,
|
| + null,
|
| + "f",
|
| + AstFactory.functionExpression2(AstFactory.formalParameterList(),
|
| + AstFactory.expressionFunctionBody(AstFactory.integer(1))));
|
| + FunctionDeclarationStatement fStatement =
|
| + new FunctionDeclarationStatement(f);
|
| + _assertSource(
|
| + "main() {f() => 1; 2;}",
|
| + AstFactory.functionDeclaration(
|
| + null,
|
| + null,
|
| + "main",
|
| + AstFactory.functionExpression2(
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2([
|
| + fStatement,
|
| + AstFactory.expressionStatement(AstFactory.integer(2))
|
| + ]))));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_normal() {
|
| + _assertSource(
|
| + "f() {}",
|
| + AstFactory.functionDeclaration(
|
| + null, null, "f", AstFactory.functionExpression()));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_setter() {
|
| + _assertSource(
|
| + "set f() {}",
|
| + AstFactory.functionDeclaration(
|
| + null, Keyword.SET, "f", AstFactory.functionExpression()));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_typeParameters() {
|
| + _assertSource(
|
| + "f<E>() {}",
|
| + AstFactory.functionDeclaration(
|
| + null,
|
| + null,
|
| + "f",
|
| + AstFactory.functionExpression3(
|
| + AstFactory.typeParameterList(['E']),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2())));
|
| + }
|
| +
|
| + void test_visitFunctionDeclaration_withMetadata() {
|
| + FunctionDeclaration declaration = AstFactory.functionDeclaration(
|
| + null, null, "f", AstFactory.functionExpression());
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated f() {}", declaration);
|
| + }
|
| +
|
| + void test_visitFunctionDeclarationStatement() {
|
| + _assertSource(
|
| + "f() {}",
|
| + AstFactory.functionDeclarationStatement(
|
| + null, null, "f", AstFactory.functionExpression()));
|
| + }
|
| +
|
| + void test_visitFunctionExpression() {
|
| + _assertSource("() {}", AstFactory.functionExpression());
|
| + }
|
| +
|
| + void test_visitFunctionExpression_typeParameters() {
|
| + _assertSource(
|
| + "<E>() {}",
|
| + AstFactory.functionExpression3(AstFactory.typeParameterList(['E']),
|
| + AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitFunctionExpressionInvocation_minimal() {
|
| + _assertSource("f()",
|
| + AstFactory.functionExpressionInvocation(AstFactory.identifier3("f")));
|
| + }
|
| +
|
| + void test_visitFunctionExpressionInvocation_typeArguments() {
|
| + _assertSource(
|
| + "f<A>()",
|
| + AstFactory.functionExpressionInvocation2(AstFactory.identifier3("f"),
|
| + AstFactory.typeArgumentList([AstFactory.typeName4('A')])));
|
| + }
|
| +
|
| + void test_visitFunctionTypeAlias_generic() {
|
| + _assertSource(
|
| + "typedef A F<B>();",
|
| + AstFactory.typeAlias(
|
| + AstFactory.typeName4("A"),
|
| + "F",
|
| + AstFactory.typeParameterList(["B"]),
|
| + AstFactory.formalParameterList()));
|
| + }
|
| +
|
| + void test_visitFunctionTypeAlias_nonGeneric() {
|
| + _assertSource(
|
| + "typedef A F();",
|
| + AstFactory.typeAlias(AstFactory.typeName4("A"), "F", null,
|
| + AstFactory.formalParameterList()));
|
| + }
|
| +
|
| + void test_visitFunctionTypeAlias_withMetadata() {
|
| + FunctionTypeAlias declaration = AstFactory.typeAlias(
|
| + AstFactory.typeName4("A"), "F", null, AstFactory.formalParameterList());
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated typedef A F();", declaration);
|
| + }
|
| +
|
| + void test_visitFunctionTypedFormalParameter_annotation() {
|
| + FunctionTypedFormalParameter parameter =
|
| + AstFactory.functionTypedFormalParameter(null, "f");
|
| + parameter.metadata.add(AstFactory.annotation(AstFactory.identifier3("A")));
|
| + _assertSource('@A f()', parameter);
|
| + }
|
| +
|
| + void test_visitFunctionTypedFormalParameter_noType() {
|
| + _assertSource("f()", AstFactory.functionTypedFormalParameter(null, "f"));
|
| + }
|
| +
|
| + void test_visitFunctionTypedFormalParameter_type() {
|
| + _assertSource(
|
| + "T f()",
|
| + AstFactory.functionTypedFormalParameter(
|
| + AstFactory.typeName4("T"), "f"));
|
| + }
|
| +
|
| + void test_visitFunctionTypedFormalParameter_typeParameters() {
|
| + _assertSource(
|
| + "T f<E>()",
|
| + new FunctionTypedFormalParameter(
|
| + null,
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + AstFactory.identifier3('f'),
|
| + AstFactory.typeParameterList(['E']),
|
| + AstFactory.formalParameterList([])));
|
| + }
|
| +
|
| + void test_visitIfStatement_withElse() {
|
| + _assertSource(
|
| + "if (c) {} else {}",
|
| + AstFactory.ifStatement2(AstFactory.identifier3("c"), AstFactory.block(),
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitIfStatement_withoutElse() {
|
| + _assertSource(
|
| + "if (c) {}",
|
| + AstFactory.ifStatement(
|
| + AstFactory.identifier3("c"), AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitImplementsClause_multiple() {
|
| + _assertSource(
|
| + "implements A, B",
|
| + AstFactory.implementsClause(
|
| + [AstFactory.typeName4("A"), AstFactory.typeName4("B")]));
|
| + }
|
| +
|
| + void test_visitImplementsClause_single() {
|
| + _assertSource("implements A",
|
| + AstFactory.implementsClause([AstFactory.typeName4("A")]));
|
| + }
|
| +
|
| + void test_visitImportDirective_combinator() {
|
| + _assertSource(
|
| + "import 'a.dart' show A;",
|
| + AstFactory.importDirective3("a.dart", null, [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitImportDirective_combinators() {
|
| + _assertSource(
|
| + "import 'a.dart' show A hide B;",
|
| + AstFactory.importDirective3("a.dart", null, [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")]),
|
| + AstFactory.hideCombinator([AstFactory.identifier3("B")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitImportDirective_deferred() {
|
| + _assertSource("import 'a.dart' deferred as p;",
|
| + AstFactory.importDirective2("a.dart", true, "p"));
|
| + }
|
| +
|
| + void test_visitImportDirective_minimal() {
|
| + _assertSource(
|
| + "import 'a.dart';", AstFactory.importDirective3("a.dart", null));
|
| + }
|
| +
|
| + void test_visitImportDirective_prefix() {
|
| + _assertSource(
|
| + "import 'a.dart' as p;", AstFactory.importDirective3("a.dart", "p"));
|
| + }
|
| +
|
| + void test_visitImportDirective_prefix_combinator() {
|
| + _assertSource(
|
| + "import 'a.dart' as p show A;",
|
| + AstFactory.importDirective3("a.dart", "p", [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitImportDirective_prefix_combinators() {
|
| + _assertSource(
|
| + "import 'a.dart' as p show A hide B;",
|
| + AstFactory.importDirective3("a.dart", "p", [
|
| + AstFactory.showCombinator([AstFactory.identifier3("A")]),
|
| + AstFactory.hideCombinator([AstFactory.identifier3("B")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitImportDirective_withMetadata() {
|
| + ImportDirective directive = AstFactory.importDirective3("a.dart", null);
|
| + directive.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated import 'a.dart';", directive);
|
| + }
|
| +
|
| + void test_visitImportHideCombinator_multiple() {
|
| + _assertSource(
|
| + "hide a, b",
|
| + AstFactory.hideCombinator(
|
| + [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
|
| + }
|
| +
|
| + void test_visitImportHideCombinator_single() {
|
| + _assertSource(
|
| + "hide a", AstFactory.hideCombinator([AstFactory.identifier3("a")]));
|
| + }
|
| +
|
| + void test_visitImportShowCombinator_multiple() {
|
| + _assertSource(
|
| + "show a, b",
|
| + AstFactory.showCombinator(
|
| + [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
|
| + }
|
| +
|
| + void test_visitImportShowCombinator_single() {
|
| + _assertSource(
|
| + "show a", AstFactory.showCombinator([AstFactory.identifier3("a")]));
|
| + }
|
| +
|
| + void test_visitIndexExpression() {
|
| + _assertSource(
|
| + "a[i]",
|
| + AstFactory.indexExpression(
|
| + AstFactory.identifier3("a"), AstFactory.identifier3("i")));
|
| + }
|
| +
|
| + void test_visitInstanceCreationExpression_const() {
|
| + _assertSource(
|
| + "const C()",
|
| + AstFactory.instanceCreationExpression2(
|
| + Keyword.CONST, AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitInstanceCreationExpression_named() {
|
| + _assertSource(
|
| + "new C.c()",
|
| + AstFactory.instanceCreationExpression3(
|
| + Keyword.NEW, AstFactory.typeName4("C"), "c"));
|
| + }
|
| +
|
| + void test_visitInstanceCreationExpression_unnamed() {
|
| + _assertSource(
|
| + "new C()",
|
| + AstFactory.instanceCreationExpression2(
|
| + Keyword.NEW, AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitIntegerLiteral() {
|
| + _assertSource("42", AstFactory.integer(42));
|
| + }
|
| +
|
| + void test_visitInterpolationExpression_expression() {
|
| + _assertSource("\${a}",
|
| + AstFactory.interpolationExpression(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitInterpolationExpression_identifier() {
|
| + _assertSource("\$a", AstFactory.interpolationExpression2("a"));
|
| + }
|
| +
|
| + void test_visitInterpolationString() {
|
| + _assertSource("'x", AstFactory.interpolationString("'x", "x"));
|
| + }
|
| +
|
| + void test_visitIsExpression_negated() {
|
| + _assertSource(
|
| + "a is! C",
|
| + AstFactory.isExpression(
|
| + AstFactory.identifier3("a"), true, AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitIsExpression_normal() {
|
| + _assertSource(
|
| + "a is C",
|
| + AstFactory.isExpression(
|
| + AstFactory.identifier3("a"), false, AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitLabel() {
|
| + _assertSource("a:", AstFactory.label2("a"));
|
| + }
|
| +
|
| + void test_visitLabeledStatement_multiple() {
|
| + _assertSource(
|
| + "a: b: return;",
|
| + AstFactory.labeledStatement(
|
| + [AstFactory.label2("a"), AstFactory.label2("b")],
|
| + AstFactory.returnStatement()));
|
| + }
|
| +
|
| + void test_visitLabeledStatement_single() {
|
| + _assertSource(
|
| + "a: return;",
|
| + AstFactory.labeledStatement(
|
| + [AstFactory.label2("a")], AstFactory.returnStatement()));
|
| + }
|
| +
|
| + void test_visitLibraryDirective() {
|
| + _assertSource("library l;", AstFactory.libraryDirective2("l"));
|
| + }
|
| +
|
| + void test_visitLibraryDirective_withMetadata() {
|
| + LibraryDirective directive = AstFactory.libraryDirective2("l");
|
| + directive.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated library l;", directive);
|
| + }
|
| +
|
| + void test_visitLibraryIdentifier_multiple() {
|
| + _assertSource(
|
| + "a.b.c",
|
| + AstFactory.libraryIdentifier([
|
| + AstFactory.identifier3("a"),
|
| + AstFactory.identifier3("b"),
|
| + AstFactory.identifier3("c")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitLibraryIdentifier_single() {
|
| + _assertSource(
|
| + "a", AstFactory.libraryIdentifier([AstFactory.identifier3("a")]));
|
| + }
|
| +
|
| + void test_visitListLiteral_const() {
|
| + _assertSource("const []", AstFactory.listLiteral2(Keyword.CONST, null));
|
| + }
|
| +
|
| + void test_visitListLiteral_empty() {
|
| + _assertSource("[]", AstFactory.listLiteral());
|
| + }
|
| +
|
| + void test_visitListLiteral_nonEmpty() {
|
| + _assertSource(
|
| + "[a, b, c]",
|
| + AstFactory.listLiteral([
|
| + AstFactory.identifier3("a"),
|
| + AstFactory.identifier3("b"),
|
| + AstFactory.identifier3("c")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitMapLiteral_const() {
|
| + _assertSource("const {}", AstFactory.mapLiteral(Keyword.CONST, null));
|
| + }
|
| +
|
| + void test_visitMapLiteral_empty() {
|
| + _assertSource("{}", AstFactory.mapLiteral2());
|
| + }
|
| +
|
| + void test_visitMapLiteral_nonEmpty() {
|
| + _assertSource(
|
| + "{'a' : a, 'b' : b, 'c' : c}",
|
| + AstFactory.mapLiteral2([
|
| + AstFactory.mapLiteralEntry("a", AstFactory.identifier3("a")),
|
| + AstFactory.mapLiteralEntry("b", AstFactory.identifier3("b")),
|
| + AstFactory.mapLiteralEntry("c", AstFactory.identifier3("c"))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitMapLiteralEntry() {
|
| + _assertSource("'a' : b",
|
| + AstFactory.mapLiteralEntry("a", AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_external() {
|
| + _assertSource(
|
| + "external m();",
|
| + AstFactory.methodDeclaration(null, null, null, null,
|
| + AstFactory.identifier3("m"), AstFactory.formalParameterList()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_external_returnType() {
|
| + _assertSource(
|
| + "external T m();",
|
| + AstFactory.methodDeclaration(
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_getter() {
|
| + _assertSource(
|
| + "get m {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + Keyword.GET,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_getter_returnType() {
|
| + _assertSource(
|
| + "T get m {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + Keyword.GET,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + null,
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_getter_seturnType() {
|
| + _assertSource(
|
| + "T set m(var v) {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + Keyword.SET,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(
|
| + [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_minimal() {
|
| + _assertSource(
|
| + "m() {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_multipleParameters() {
|
| + _assertSource(
|
| + "m(var a, var b) {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList([
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "b")
|
| + ]),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_operator() {
|
| + _assertSource(
|
| + "operator +() {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + null,
|
| + Keyword.OPERATOR,
|
| + AstFactory.identifier3("+"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_operator_returnType() {
|
| + _assertSource(
|
| + "T operator +() {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + null,
|
| + Keyword.OPERATOR,
|
| + AstFactory.identifier3("+"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_returnType() {
|
| + _assertSource(
|
| + "T m() {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + AstFactory.typeName4("T"),
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_setter() {
|
| + _assertSource(
|
| + "set m(var v) {}",
|
| + AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + Keyword.SET,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(
|
| + [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_static() {
|
| + _assertSource(
|
| + "static m() {}",
|
| + AstFactory.methodDeclaration2(
|
| + Keyword.STATIC,
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_static_returnType() {
|
| + _assertSource(
|
| + "static T m() {}",
|
| + AstFactory.methodDeclaration2(
|
| + Keyword.STATIC,
|
| + AstFactory.typeName4("T"),
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_typeParameters() {
|
| + _assertSource(
|
| + "m<E>() {}",
|
| + AstFactory.methodDeclaration3(
|
| + null,
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.typeParameterList(['E']),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2()));
|
| + }
|
| +
|
| + void test_visitMethodDeclaration_withMetadata() {
|
| + MethodDeclaration declaration = AstFactory.methodDeclaration2(
|
| + null,
|
| + null,
|
| + null,
|
| + null,
|
| + AstFactory.identifier3("m"),
|
| + AstFactory.formalParameterList(),
|
| + AstFactory.blockFunctionBody2());
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated m() {}", declaration);
|
| + }
|
| +
|
| + void test_visitMethodInvocation_conditional() {
|
| + _assertSource(
|
| + "t?.m()",
|
| + AstFactory.methodInvocation(
|
| + AstFactory.identifier3("t"), "m", null, TokenType.QUESTION_PERIOD));
|
| + }
|
| +
|
| + void test_visitMethodInvocation_noTarget() {
|
| + _assertSource("m()", AstFactory.methodInvocation2("m"));
|
| + }
|
| +
|
| + void test_visitMethodInvocation_target() {
|
| + _assertSource(
|
| + "t.m()", AstFactory.methodInvocation(AstFactory.identifier3("t"), "m"));
|
| + }
|
| +
|
| + void test_visitMethodInvocation_typeArguments() {
|
| + _assertSource(
|
| + "m<A>()",
|
| + AstFactory.methodInvocation3(null, "m",
|
| + AstFactory.typeArgumentList([AstFactory.typeName4('A')])));
|
| + }
|
| +
|
| + void test_visitNamedExpression() {
|
| + _assertSource(
|
| + "a: b", AstFactory.namedExpression2("a", AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitNamedFormalParameter() {
|
| + _assertSource(
|
| + "var a : 0",
|
| + AstFactory.namedFormalParameter(
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
|
| + AstFactory.integer(0)));
|
| + }
|
| +
|
| + void test_visitNativeClause() {
|
| + _assertSource("native 'code'", AstFactory.nativeClause("code"));
|
| + }
|
| +
|
| + void test_visitNativeFunctionBody() {
|
| + _assertSource("native 'str';", AstFactory.nativeFunctionBody("str"));
|
| + }
|
| +
|
| + void test_visitNullLiteral() {
|
| + _assertSource("null", AstFactory.nullLiteral());
|
| + }
|
| +
|
| + void test_visitParenthesizedExpression() {
|
| + _assertSource(
|
| + "(a)", AstFactory.parenthesizedExpression(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitPartDirective() {
|
| + _assertSource("part 'a.dart';", AstFactory.partDirective2("a.dart"));
|
| + }
|
| +
|
| + void test_visitPartDirective_withMetadata() {
|
| + PartDirective directive = AstFactory.partDirective2("a.dart");
|
| + directive.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated part 'a.dart';", directive);
|
| + }
|
| +
|
| + void test_visitPartOfDirective() {
|
| + _assertSource("part of l;",
|
| + AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"])));
|
| + }
|
| +
|
| + void test_visitPartOfDirective_withMetadata() {
|
| + PartOfDirective directive =
|
| + AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"]));
|
| + directive.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated part of l;", directive);
|
| + }
|
| +
|
| + void test_visitPositionalFormalParameter() {
|
| + _assertSource(
|
| + "var a = 0",
|
| + AstFactory.positionalFormalParameter(
|
| + AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
|
| + AstFactory.integer(0)));
|
| + }
|
| +
|
| + void test_visitPostfixExpression() {
|
| + _assertSource(
|
| + "a++",
|
| + AstFactory.postfixExpression(
|
| + AstFactory.identifier3("a"), TokenType.PLUS_PLUS));
|
| + }
|
| +
|
| + void test_visitPrefixedIdentifier() {
|
| + _assertSource("a.b", AstFactory.identifier5("a", "b"));
|
| + }
|
| +
|
| + void test_visitPrefixExpression() {
|
| + _assertSource(
|
| + "-a",
|
| + AstFactory.prefixExpression(
|
| + TokenType.MINUS, AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitPropertyAccess() {
|
| + _assertSource(
|
| + "a.b", AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"));
|
| + }
|
| +
|
| + void test_visitPropertyAccess_conditional() {
|
| + _assertSource(
|
| + "a?.b",
|
| + AstFactory.propertyAccess2(
|
| + AstFactory.identifier3("a"), "b", TokenType.QUESTION_PERIOD));
|
| + }
|
| +
|
| + void test_visitRedirectingConstructorInvocation_named() {
|
| + _assertSource(
|
| + "this.c()", AstFactory.redirectingConstructorInvocation2("c"));
|
| + }
|
| +
|
| + void test_visitRedirectingConstructorInvocation_unnamed() {
|
| + _assertSource("this()", AstFactory.redirectingConstructorInvocation());
|
| + }
|
| +
|
| + void test_visitRethrowExpression() {
|
| + _assertSource("rethrow", AstFactory.rethrowExpression());
|
| + }
|
| +
|
| + void test_visitReturnStatement_expression() {
|
| + _assertSource(
|
| + "return a;", AstFactory.returnStatement2(AstFactory.identifier3("a")));
|
| + }
|
| +
|
| + void test_visitReturnStatement_noExpression() {
|
| + _assertSource("return;", AstFactory.returnStatement());
|
| + }
|
| +
|
| + void test_visitScriptTag() {
|
| + String scriptTag = "!#/bin/dart.exe";
|
| + _assertSource(scriptTag, AstFactory.scriptTag(scriptTag));
|
| + }
|
| +
|
| + void test_visitSimpleFormalParameter_annotation() {
|
| + SimpleFormalParameter parameter = AstFactory.simpleFormalParameter3('x');
|
| + parameter.metadata.add(AstFactory.annotation(AstFactory.identifier3("A")));
|
| + _assertSource('@A x', parameter);
|
| + }
|
| +
|
| + void test_visitSimpleFormalParameter_keyword() {
|
| + _assertSource("var a", AstFactory.simpleFormalParameter(Keyword.VAR, "a"));
|
| + }
|
| +
|
| + void test_visitSimpleFormalParameter_keyword_type() {
|
| + _assertSource(
|
| + "final A a",
|
| + AstFactory.simpleFormalParameter2(
|
| + Keyword.FINAL, AstFactory.typeName4("A"), "a"));
|
| + }
|
| +
|
| + void test_visitSimpleFormalParameter_type() {
|
| + _assertSource("A a",
|
| + AstFactory.simpleFormalParameter4(AstFactory.typeName4("A"), "a"));
|
| + }
|
| +
|
| + void test_visitSimpleIdentifier() {
|
| + _assertSource("a", AstFactory.identifier3("a"));
|
| + }
|
| +
|
| + void test_visitSimpleStringLiteral() {
|
| + _assertSource("'a'", AstFactory.string2("a"));
|
| + }
|
| +
|
| + void test_visitStringInterpolation() {
|
| + _assertSource(
|
| + "'a\${e}b'",
|
| + AstFactory.string([
|
| + AstFactory.interpolationString("'a", "a"),
|
| + AstFactory.interpolationExpression(AstFactory.identifier3("e")),
|
| + AstFactory.interpolationString("b'", "b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitSuperConstructorInvocation() {
|
| + _assertSource("super()", AstFactory.superConstructorInvocation());
|
| + }
|
| +
|
| + void test_visitSuperConstructorInvocation_named() {
|
| + _assertSource("super.c()", AstFactory.superConstructorInvocation2("c"));
|
| + }
|
| +
|
| + void test_visitSuperExpression() {
|
| + _assertSource("super", AstFactory.superExpression());
|
| + }
|
| +
|
| + void test_visitSwitchCase_multipleLabels() {
|
| + _assertSource(
|
| + "l1: l2: case a: {}",
|
| + AstFactory.switchCase2(
|
| + [AstFactory.label2("l1"), AstFactory.label2("l2")],
|
| + AstFactory.identifier3("a"),
|
| + [AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchCase_multipleStatements() {
|
| + _assertSource(
|
| + "case a: {} {}",
|
| + AstFactory.switchCase(AstFactory.identifier3("a"),
|
| + [AstFactory.block(), AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchCase_noLabels() {
|
| + _assertSource(
|
| + "case a: {}",
|
| + AstFactory
|
| + .switchCase(AstFactory.identifier3("a"), [AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchCase_singleLabel() {
|
| + _assertSource(
|
| + "l1: case a: {}",
|
| + AstFactory.switchCase2([AstFactory.label2("l1")],
|
| + AstFactory.identifier3("a"), [AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchDefault_multipleLabels() {
|
| + _assertSource(
|
| + "l1: l2: default: {}",
|
| + AstFactory.switchDefault(
|
| + [AstFactory.label2("l1"), AstFactory.label2("l2")],
|
| + [AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchDefault_multipleStatements() {
|
| + _assertSource("default: {} {}",
|
| + AstFactory.switchDefault2([AstFactory.block(), AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchDefault_noLabels() {
|
| + _assertSource(
|
| + "default: {}", AstFactory.switchDefault2([AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchDefault_singleLabel() {
|
| + _assertSource(
|
| + "l1: default: {}",
|
| + AstFactory
|
| + .switchDefault([AstFactory.label2("l1")], [AstFactory.block()]));
|
| + }
|
| +
|
| + void test_visitSwitchStatement() {
|
| + _assertSource(
|
| + "switch (a) {case 'b': {} default: {}}",
|
| + AstFactory.switchStatement(AstFactory.identifier3("a"), [
|
| + AstFactory.switchCase(AstFactory.string2("b"), [AstFactory.block()]),
|
| + AstFactory.switchDefault2([AstFactory.block()])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitSymbolLiteral_multiple() {
|
| + _assertSource("#a.b.c", AstFactory.symbolLiteral(["a", "b", "c"]));
|
| + }
|
| +
|
| + void test_visitSymbolLiteral_single() {
|
| + _assertSource("#a", AstFactory.symbolLiteral(["a"]));
|
| + }
|
| +
|
| + void test_visitThisExpression() {
|
| + _assertSource("this", AstFactory.thisExpression());
|
| + }
|
| +
|
| + void test_visitThrowStatement() {
|
| + _assertSource(
|
| + "throw e", AstFactory.throwExpression2(AstFactory.identifier3("e")));
|
| + }
|
| +
|
| + void test_visitTopLevelVariableDeclaration_multiple() {
|
| + _assertSource(
|
| + "var a;",
|
| + AstFactory.topLevelVariableDeclaration2(
|
| + Keyword.VAR, [AstFactory.variableDeclaration("a")]));
|
| + }
|
| +
|
| + void test_visitTopLevelVariableDeclaration_single() {
|
| + _assertSource(
|
| + "var a, b;",
|
| + AstFactory.topLevelVariableDeclaration2(Keyword.VAR, [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitTryStatement_catch() {
|
| + _assertSource(
|
| + "try {} on E {}",
|
| + AstFactory.tryStatement2(AstFactory.block(),
|
| + [AstFactory.catchClause3(AstFactory.typeName4("E"))]));
|
| + }
|
| +
|
| + void test_visitTryStatement_catches() {
|
| + _assertSource(
|
| + "try {} on E {} on F {}",
|
| + AstFactory.tryStatement2(AstFactory.block(), [
|
| + AstFactory.catchClause3(AstFactory.typeName4("E")),
|
| + AstFactory.catchClause3(AstFactory.typeName4("F"))
|
| + ]));
|
| + }
|
| +
|
| + void test_visitTryStatement_catchFinally() {
|
| + _assertSource(
|
| + "try {} on E {} finally {}",
|
| + AstFactory.tryStatement3(
|
| + AstFactory.block(),
|
| + [AstFactory.catchClause3(AstFactory.typeName4("E"))],
|
| + AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitTryStatement_finally() {
|
| + _assertSource("try {} finally {}",
|
| + AstFactory.tryStatement(AstFactory.block(), AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitTypeArgumentList_multiple() {
|
| + _assertSource(
|
| + "<E, F>",
|
| + AstFactory.typeArgumentList(
|
| + [AstFactory.typeName4("E"), AstFactory.typeName4("F")]));
|
| + }
|
| +
|
| + void test_visitTypeArgumentList_single() {
|
| + _assertSource(
|
| + "<E>", AstFactory.typeArgumentList([AstFactory.typeName4("E")]));
|
| + }
|
| +
|
| + void test_visitTypeName_multipleArgs() {
|
| + _assertSource(
|
| + "C<D, E>",
|
| + AstFactory.typeName4(
|
| + "C", [AstFactory.typeName4("D"), AstFactory.typeName4("E")]));
|
| + }
|
| +
|
| + void test_visitTypeName_nestedArg() {
|
| + _assertSource(
|
| + "C<D<E>>",
|
| + AstFactory.typeName4("C", [
|
| + AstFactory.typeName4("D", [AstFactory.typeName4("E")])
|
| + ]));
|
| + }
|
| +
|
| + void test_visitTypeName_noArgs() {
|
| + _assertSource("C", AstFactory.typeName4("C"));
|
| + }
|
| +
|
| + void test_visitTypeName_singleArg() {
|
| + _assertSource(
|
| + "C<D>", AstFactory.typeName4("C", [AstFactory.typeName4("D")]));
|
| + }
|
| +
|
| + void test_visitTypeParameter_withExtends() {
|
| + _assertSource("E extends C",
|
| + AstFactory.typeParameter2("E", AstFactory.typeName4("C")));
|
| + }
|
| +
|
| + void test_visitTypeParameter_withMetadata() {
|
| + TypeParameter parameter = AstFactory.typeParameter("E");
|
| + parameter.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated E", parameter);
|
| + }
|
| +
|
| + void test_visitTypeParameter_withoutExtends() {
|
| + _assertSource("E", AstFactory.typeParameter("E"));
|
| + }
|
| +
|
| + void test_visitTypeParameterList_multiple() {
|
| + _assertSource("<E, F>", AstFactory.typeParameterList(["E", "F"]));
|
| + }
|
| +
|
| + void test_visitTypeParameterList_single() {
|
| + _assertSource("<E>", AstFactory.typeParameterList(["E"]));
|
| + }
|
| +
|
| + void test_visitVariableDeclaration_initialized() {
|
| + _assertSource("a = b",
|
| + AstFactory.variableDeclaration2("a", AstFactory.identifier3("b")));
|
| + }
|
| +
|
| + void test_visitVariableDeclaration_uninitialized() {
|
| + _assertSource("a", AstFactory.variableDeclaration("a"));
|
| + }
|
| +
|
| + void test_visitVariableDeclaration_withMetadata() {
|
| + VariableDeclaration declaration = AstFactory.variableDeclaration("a");
|
| + declaration.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated a", declaration);
|
| + }
|
| +
|
| + void test_visitVariableDeclarationList_const_type() {
|
| + _assertSource(
|
| + "const C a, b",
|
| + AstFactory.variableDeclarationList(
|
| + Keyword.CONST, AstFactory.typeName4("C"), [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitVariableDeclarationList_final_noType() {
|
| + _assertSource(
|
| + "final a, b",
|
| + AstFactory.variableDeclarationList2(Keyword.FINAL, [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitVariableDeclarationList_final_withMetadata() {
|
| + VariableDeclarationList declarationList = AstFactory
|
| + .variableDeclarationList2(Keyword.FINAL, [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]);
|
| + declarationList.metadata
|
| + .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
|
| + _assertSource("@deprecated final a, b", declarationList);
|
| + }
|
| +
|
| + void test_visitVariableDeclarationList_type() {
|
| + _assertSource(
|
| + "C a, b",
|
| + AstFactory.variableDeclarationList(null, AstFactory.typeName4("C"), [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitVariableDeclarationList_var() {
|
| + _assertSource(
|
| + "var a, b",
|
| + AstFactory.variableDeclarationList2(Keyword.VAR, [
|
| + AstFactory.variableDeclaration("a"),
|
| + AstFactory.variableDeclaration("b")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitVariableDeclarationStatement() {
|
| + _assertSource(
|
| + "C c;",
|
| + AstFactory.variableDeclarationStatement(null, AstFactory.typeName4("C"),
|
| + [AstFactory.variableDeclaration("c")]));
|
| + }
|
| +
|
| + void test_visitWhileStatement() {
|
| + _assertSource(
|
| + "while (c) {}",
|
| + AstFactory.whileStatement(
|
| + AstFactory.identifier3("c"), AstFactory.block()));
|
| + }
|
| +
|
| + void test_visitWithClause_multiple() {
|
| + _assertSource(
|
| + "with A, B, C",
|
| + AstFactory.withClause([
|
| + AstFactory.typeName4("A"),
|
| + AstFactory.typeName4("B"),
|
| + AstFactory.typeName4("C")
|
| + ]));
|
| + }
|
| +
|
| + void test_visitWithClause_single() {
|
| + _assertSource("with A", AstFactory.withClause([AstFactory.typeName4("A")]));
|
| + }
|
| +
|
| + void test_visitYieldStatement() {
|
| + _assertSource(
|
| + "yield e;", AstFactory.yieldStatement(AstFactory.identifier3("e")));
|
| + }
|
| +
|
| + void test_visitYieldStatement_each() {
|
| + _assertSource("yield* e;",
|
| + AstFactory.yieldEachStatement(AstFactory.identifier3("e")));
|
| + }
|
| +
|
| + /**
|
| + * Assert that a `ToSourceVisitor2` will produce the [expectedSource] when
|
| + * visiting the given [node].
|
| + */
|
| + void _assertSource(String expectedSource, AstNode node) {
|
| + StringBuffer buffer = new StringBuffer();
|
| + node.accept(new ToSourceVisitor2(buffer));
|
| + expect(buffer.toString(), expectedSource);
|
| + }
|
| +}
|
| +
|
| +@reflectiveTest
|
| class ToSourceVisitorTest extends EngineTestCase {
|
| void test_visitAdjacentStrings() {
|
| _assertSource(
|
| @@ -3333,12 +5569,8 @@ class ToSourceVisitorTest extends EngineTestCase {
|
| }
|
|
|
| /**
|
| - * Assert that a `ToSourceVisitor` will produce the expected source when visiting the given
|
| - * node.
|
| - *
|
| - * @param expectedSource the source string that the visitor is expected to produce
|
| - * @param node the AST node being visited to produce the actual source
|
| - * @throws AFE if the visitor does not produce the expected source for the given node
|
| + * Assert that a `ToSourceVisitor` will produce the [expectedSource] when
|
| + * visiting the given [node].
|
| */
|
| void _assertSource(String expectedSource, AstNode node) {
|
| PrintStringWriter writer = new PrintStringWriter();
|
|
|