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

Unified Diff: pkg/analyzer/test/generated/utilities_test.dart

Issue 1660873003: Clone and link all tokens in AstCloner. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/test/generated/incremental_resolver_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/utilities_test.dart
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index d07f422a167a8fa3180c26ba0282f8d4d2e3f69a..87c58858680b420fd560a314460c2213477ba864 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -10,6 +10,7 @@ import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/generated/java_core.dart';
import 'package:analyzer/src/generated/java_engine.dart';
+import 'package:analyzer/src/generated/parser.dart';
import 'package:analyzer/src/generated/scanner.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/testing/ast_factory.dart';
@@ -63,1663 +64,1039 @@ class AstCloneComparator extends AstComparator {
@reflectiveTest
class AstClonerTest extends EngineTestCase {
void test_visitAdjacentStrings() {
- _assertClone(AstFactory
- .adjacentStrings([AstFactory.string2("a"), AstFactory.string2("b")]));
+ _assertCloneExpression("'a' 'b'");
}
void test_visitAnnotation_constant() {
- _assertClone(AstFactory.annotation(AstFactory.identifier3("A")));
+ _assertCloneUnitMember('@A main() {}');
}
void test_visitAnnotation_constructor() {
- _assertClone(AstFactory.annotation2(AstFactory.identifier3("A"),
- AstFactory.identifier3("c"), AstFactory.argumentList()));
+ _assertCloneUnitMember('@A.c() main() {}');
}
void test_visitArgumentList() {
- _assertClone(AstFactory.argumentList(
- [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+ _assertCloneExpression('m(a, b)');
}
void test_visitAsExpression() {
- _assertClone(AstFactory.asExpression(
- AstFactory.identifier3("e"), AstFactory.typeName4("T")));
+ _assertCloneExpression('e as T');
}
void test_visitAssertStatement() {
- _assertClone(AstFactory.assertStatement(AstFactory.identifier3("a")));
+ _assertCloneStatement('assert(a);');
}
void test_visitAssignmentExpression() {
- _assertClone(AstFactory.assignmentExpression(AstFactory.identifier3("a"),
- TokenType.EQ, AstFactory.identifier3("b")));
+ _assertCloneStatement('a = b;');
}
void test_visitAwaitExpression() {
- _assertClone(AstFactory.awaitExpression(AstFactory.identifier3("a")));
+ _assertCloneStatement('await a;');
}
void test_visitBinaryExpression() {
- _assertClone(AstFactory.binaryExpression(AstFactory.identifier3("a"),
- TokenType.PLUS, AstFactory.identifier3("b")));
+ _assertCloneExpression('a + b');
}
void test_visitBlock_empty() {
- _assertClone(AstFactory.block());
+ _assertCloneStatement('{}');
}
void test_visitBlock_nonEmpty() {
- _assertClone(AstFactory
- .block([AstFactory.breakStatement(), AstFactory.breakStatement()]));
+ _assertCloneStatement('{ print(1); print(2); }');
}
void test_visitBlockFunctionBody() {
- _assertClone(AstFactory.blockFunctionBody2());
+ _assertCloneUnitMember('main() {}');
}
void test_visitBooleanLiteral_false() {
- _assertClone(AstFactory.booleanLiteral(false));
+ _assertCloneExpression('false');
}
void test_visitBooleanLiteral_true() {
- _assertClone(AstFactory.booleanLiteral(true));
+ _assertCloneExpression('true');
}
void test_visitBreakStatement_label() {
- _assertClone(AstFactory.breakStatement2("l"));
+ _assertCloneStatement('l: while(true) { break l; }');
}
void test_visitBreakStatement_noLabel() {
- _assertClone(AstFactory.breakStatement());
+ _assertCloneStatement('while(true) { break; }');
}
void test_visitCascadeExpression_field() {
- _assertClone(AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
- AstFactory.cascadedPropertyAccess("b"),
- AstFactory.cascadedPropertyAccess("c")
- ]));
+ _assertCloneExpression('a..b..c');
}
void test_visitCascadeExpression_index() {
- _assertClone(AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
- AstFactory.cascadedIndexExpression(AstFactory.integer(0)),
- AstFactory.cascadedIndexExpression(AstFactory.integer(1))
- ]));
+ _assertCloneExpression('a..[0]..[1]');
}
void test_visitCascadeExpression_method() {
- _assertClone(AstFactory.cascadeExpression(AstFactory.identifier3("a"), [
- AstFactory.cascadedMethodInvocation("b"),
- AstFactory.cascadedMethodInvocation("c")
- ]));
+ _assertCloneExpression('a..b()..c()');
}
void test_visitCatchClause_catch_noStack() {
- _assertClone(AstFactory.catchClause("e"));
+ _assertCloneStatement('try {} catch (e) {}');
}
void test_visitCatchClause_catch_stack() {
- _assertClone(AstFactory.catchClause2("e", "s"));
+ _assertCloneStatement('try {} catch (e, s) {}');
}
void test_visitCatchClause_on() {
- _assertClone(AstFactory.catchClause3(AstFactory.typeName4("E")));
+ _assertCloneStatement('try {} on E {}');
}
void test_visitCatchClause_on_catch() {
- _assertClone(AstFactory.catchClause4(AstFactory.typeName4("E"), "e"));
+ _assertCloneStatement('try {} on E catch (e) {}');
}
void test_visitClassDeclaration_abstract() {
- _assertClone(AstFactory.classDeclaration(
- Keyword.ABSTRACT, "C", null, null, null, null));
+ _assertCloneUnitMember('abstract class C {}');
}
void test_visitClassDeclaration_empty() {
- _assertClone(
- AstFactory.classDeclaration(null, "C", null, null, null, null));
+ _assertCloneUnitMember('class C {}');
}
void test_visitClassDeclaration_extends() {
- _assertClone(AstFactory.classDeclaration(null, "C", null,
- AstFactory.extendsClause(AstFactory.typeName4("A")), null, null));
+ _assertCloneUnitMember('class C extends A {}');
}
void test_visitClassDeclaration_extends_implements() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- null,
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- null,
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C extends A implements B {}');
}
void test_visitClassDeclaration_extends_with() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- null,
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- AstFactory.withClause([AstFactory.typeName4("M")]),
- null));
+ _assertCloneUnitMember('class C extends A with M {}');
}
void test_visitClassDeclaration_extends_with_implements() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- null,
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- AstFactory.withClause([AstFactory.typeName4("M")]),
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C extends A with M implements B {}');
}
void test_visitClassDeclaration_implements() {
- _assertClone(AstFactory.classDeclaration(null, "C", null, null, null,
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C implements B {}');
}
void test_visitClassDeclaration_multipleMember() {
- _assertClone(
- AstFactory.classDeclaration(null, "C", null, null, null, null, [
- AstFactory.fieldDeclaration2(
- false, Keyword.VAR, [AstFactory.variableDeclaration("a")]),
- AstFactory.fieldDeclaration2(
- false, Keyword.VAR, [AstFactory.variableDeclaration("b")])
- ]));
+ _assertCloneUnitMember('class C { var a; var b; }');
}
void test_visitClassDeclaration_parameters() {
- _assertClone(AstFactory.classDeclaration(
- null, "C", AstFactory.typeParameterList(["E"]), null, null, null));
+ _assertCloneUnitMember('class C<E> {}');
}
void test_visitClassDeclaration_parameters_extends() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- AstFactory.typeParameterList(["E"]),
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- null,
- null));
+ _assertCloneUnitMember('class C<E> extends A {}');
}
void test_visitClassDeclaration_parameters_extends_implements() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- AstFactory.typeParameterList(["E"]),
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- null,
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C<E> extends A implements B {}');
}
void test_visitClassDeclaration_parameters_extends_with() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- AstFactory.typeParameterList(["E"]),
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- AstFactory.withClause([AstFactory.typeName4("M")]),
- null));
+ _assertCloneUnitMember('class C<E> extends A with M {}');
}
void test_visitClassDeclaration_parameters_extends_with_implements() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- AstFactory.typeParameterList(["E"]),
- AstFactory.extendsClause(AstFactory.typeName4("A")),
- AstFactory.withClause([AstFactory.typeName4("M")]),
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C<E> extends A with M implements B {}');
}
void test_visitClassDeclaration_parameters_implements() {
- _assertClone(AstFactory.classDeclaration(
- null,
- "C",
- AstFactory.typeParameterList(["E"]),
- null,
- null,
- AstFactory.implementsClause([AstFactory.typeName4("B")])));
+ _assertCloneUnitMember('class C<E> implements B {}');
}
void test_visitClassDeclaration_singleMember() {
- _assertClone(
- AstFactory.classDeclaration(null, "C", null, null, null, null, [
- AstFactory.fieldDeclaration2(
- false, Keyword.VAR, [AstFactory.variableDeclaration("a")])
- ]));
+ _assertCloneUnitMember('class C { var a; }');
}
void test_visitClassDeclaration_withMetadata() {
- ClassDeclaration declaration =
- AstFactory.classDeclaration(null, "C", null, null, null, null);
- declaration.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(declaration);
+ _assertCloneUnitMember('@deprecated class C {}');
}
void test_visitClassTypeAlias_abstract() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- null,
- Keyword.ABSTRACT,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- null));
+ _assertCloneUnitMember('abstract class C = S with M1;');
}
void test_visitClassTypeAlias_abstract_implements() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- null,
- Keyword.ABSTRACT,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- AstFactory.implementsClause([AstFactory.typeName4("I")])));
+ _assertCloneUnitMember('abstract class C = S with M1 implements I;');
}
void test_visitClassTypeAlias_generic() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- AstFactory.typeParameterList(["E"]),
- null,
- AstFactory.typeName4("S", [AstFactory.typeName4("E")]),
- AstFactory.withClause([
- AstFactory.typeName4("M1", [AstFactory.typeName4("E")])
- ]),
- null));
+ _assertCloneUnitMember('class C<E> = S<E> with M1<E>;');
}
void test_visitClassTypeAlias_implements() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- null,
- null,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- AstFactory.implementsClause([AstFactory.typeName4("I")])));
+ _assertCloneUnitMember('class C = S with M1 implements I;');
}
void test_visitClassTypeAlias_minimal() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- null,
- null,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- null));
+ _assertCloneUnitMember('class C = S with M1;');
}
void test_visitClassTypeAlias_parameters_abstract() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- AstFactory.typeParameterList(["E"]),
- Keyword.ABSTRACT,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- null));
+ _assertCloneUnitMember('abstract class C = S<E> with M1;');
}
void test_visitClassTypeAlias_parameters_abstract_implements() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- AstFactory.typeParameterList(["E"]),
- Keyword.ABSTRACT,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- AstFactory.implementsClause([AstFactory.typeName4("I")])));
+ _assertCloneUnitMember('abstract class C = S<E> with M1 implements I;');
}
void test_visitClassTypeAlias_parameters_implements() {
- _assertClone(AstFactory.classTypeAlias(
- "C",
- AstFactory.typeParameterList(["E"]),
- null,
- AstFactory.typeName4("S"),
- AstFactory.withClause([AstFactory.typeName4("M1")]),
- AstFactory.implementsClause([AstFactory.typeName4("I")])));
+ _assertCloneUnitMember('class C = S<E> with M1 implements 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")));
- _assertClone(declaration);
+ _assertCloneUnitMember('@deprecated class C = S with M;');
}
void test_visitComment() {
- _assertClone(Comment.createBlockComment(
- <Token>[TokenFactory.tokenFromString("/* comment */")]));
+ _assertCloneUnitMember('main() { print(1); /* comment */ print(2); }');
+ }
+
+ void test_visitComment_beginToken() {
+ _assertCloneUnitMember('/** comment */ main() {}');
}
void test_visitCommentReference() {
- _assertClone(new CommentReference(null, AstFactory.identifier3("a")));
+ _assertCloneUnitMember('/** ref [a]. */ main(a) {}');
}
void test_visitCompilationUnit_declaration() {
- _assertClone(AstFactory.compilationUnit2([
- AstFactory.topLevelVariableDeclaration2(
- Keyword.VAR, [AstFactory.variableDeclaration("a")])
- ]));
+ _assertCloneUnitMember('var a;');
}
void test_visitCompilationUnit_directive() {
- _assertClone(
- AstFactory.compilationUnit3([AstFactory.libraryDirective2("l")]));
+ _assertCloneUnit('library l;');
}
void test_visitCompilationUnit_directive_declaration() {
- _assertClone(AstFactory.compilationUnit4([
- AstFactory.libraryDirective2("l")
- ], [
- AstFactory.topLevelVariableDeclaration2(
- Keyword.VAR, [AstFactory.variableDeclaration("a")])
- ]));
+ _assertCloneUnit('library l; var a;');
}
void test_visitCompilationUnit_empty() {
- _assertClone(AstFactory.compilationUnit());
+ _assertCloneUnit('');
}
void test_visitCompilationUnit_script() {
- _assertClone(AstFactory.compilationUnit5("!#/bin/dartvm"));
+ _assertCloneUnit('#!/bin/dartvm');
}
void test_visitCompilationUnit_script_declaration() {
- _assertClone(AstFactory.compilationUnit6("!#/bin/dartvm", [
- AstFactory.topLevelVariableDeclaration2(
- Keyword.VAR, [AstFactory.variableDeclaration("a")])
- ]));
+ _assertCloneUnit('#!/bin/dartvm \n var a;');
}
void test_visitCompilationUnit_script_directive() {
- _assertClone(AstFactory.compilationUnit7(
- "!#/bin/dartvm", [AstFactory.libraryDirective2("l")]));
+ _assertCloneUnit('#!/bin/dartvm \n library l;');
}
void test_visitCompilationUnit_script_directives_declarations() {
- _assertClone(AstFactory.compilationUnit8("!#/bin/dartvm", [
- AstFactory.libraryDirective2("l")
- ], [
- AstFactory.topLevelVariableDeclaration2(
- Keyword.VAR, [AstFactory.variableDeclaration("a")])
- ]));
+ _assertCloneUnit('#!/bin/dartvm \n library l; var a;');
}
void test_visitConditionalExpression() {
- _assertClone(AstFactory.conditionalExpression(AstFactory.identifier3("a"),
- AstFactory.identifier3("b"), AstFactory.identifier3("c")));
+ _assertCloneExpression('a ? b : c');
}
void test_visitConstructorDeclaration_const() {
- _assertClone(AstFactory.constructorDeclaration2(
- Keyword.CONST,
- null,
- AstFactory.identifier3("C"),
- null,
- AstFactory.formalParameterList(),
- null,
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { const C(); }');
}
void test_visitConstructorDeclaration_external() {
- _assertClone(AstFactory.constructorDeclaration(AstFactory.identifier3("C"),
- null, AstFactory.formalParameterList(), null));
+ _assertCloneUnitMember('class C { external C(); }');
}
void test_visitConstructorDeclaration_minimal() {
- _assertClone(AstFactory.constructorDeclaration2(
- null,
- null,
- AstFactory.identifier3("C"),
- null,
- AstFactory.formalParameterList(),
- null,
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { C() {} }');
}
void test_visitConstructorDeclaration_multipleInitializers() {
- _assertClone(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()));
+ _assertCloneUnitMember('class C { C() : a = b, c = d {} }');
}
void test_visitConstructorDeclaration_multipleParameters() {
- _assertClone(AstFactory.constructorDeclaration2(
- null,
- null,
- AstFactory.identifier3("C"),
- null,
- AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
- AstFactory.simpleFormalParameter(Keyword.VAR, "b")
- ]),
- null,
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { C(var a, var b) {} }');
}
void test_visitConstructorDeclaration_named() {
- _assertClone(AstFactory.constructorDeclaration2(
- null,
- null,
- AstFactory.identifier3("C"),
- "m",
- AstFactory.formalParameterList(),
- null,
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { C.m() {} }');
}
void test_visitConstructorDeclaration_singleInitializer() {
- _assertClone(AstFactory.constructorDeclaration2(
- null,
- null,
- AstFactory.identifier3("C"),
- null,
- AstFactory.formalParameterList(),
- [
- AstFactory.constructorFieldInitializer(
- false, "a", AstFactory.identifier3("b"))
- ],
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { C() : a = b {} }');
}
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")));
- _assertClone(declaration);
+ _assertCloneUnitMember('class C { @deprecated C() {} }');
}
void test_visitConstructorFieldInitializer_withoutThis() {
- _assertClone(AstFactory.constructorFieldInitializer(
- false, "a", AstFactory.identifier3("b")));
+ _assertCloneUnitMember('class C { C() : a = b {} }');
}
void test_visitConstructorFieldInitializer_withThis() {
- _assertClone(AstFactory.constructorFieldInitializer(
- true, "a", AstFactory.identifier3("b")));
+ _assertCloneUnitMember('class C { C() : this.a = b {} }');
}
void test_visitConstructorName_named_prefix() {
- _assertClone(
- AstFactory.constructorName(AstFactory.typeName4("p.C.n"), null));
+ _assertCloneExpression('new p.C.n()');
}
void test_visitConstructorName_unnamed_noPrefix() {
- _assertClone(AstFactory.constructorName(AstFactory.typeName4("C"), null));
+ _assertCloneExpression('new C()');
}
void test_visitConstructorName_unnamed_prefix() {
- _assertClone(AstFactory.constructorName(
- AstFactory.typeName3(AstFactory.identifier5("p", "C")), null));
+ _assertCloneExpression('new p.C()');
}
void test_visitContinueStatement_label() {
- _assertClone(AstFactory.continueStatement("l"));
+ _assertCloneStatement('l: while (true) { continue l; }');
}
void test_visitContinueStatement_noLabel() {
- _assertClone(AstFactory.continueStatement());
+ _assertCloneStatement('while (true) { continue; }');
}
void test_visitDefaultFormalParameter_named_noValue() {
- _assertClone(AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("p"), null));
+ _assertCloneUnitMember('main({p}) {}');
}
void test_visitDefaultFormalParameter_named_value() {
- _assertClone(AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("p"), AstFactory.integer(0)));
+ _assertCloneUnitMember('main({p : 0}) {}');
}
void test_visitDefaultFormalParameter_positional_noValue() {
- _assertClone(AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("p"), null));
+ _assertCloneUnitMember('main([p]) {}');
}
void test_visitDefaultFormalParameter_positional_value() {
- _assertClone(AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("p"), AstFactory.integer(0)));
+ _assertCloneUnitMember('main([p = 0]) {}');
}
void test_visitDoStatement() {
- _assertClone(AstFactory.doStatement(
- AstFactory.block(), AstFactory.identifier3("c")));
+ _assertCloneStatement('do {} while (c);');
}
void test_visitDoubleLiteral() {
- _assertClone(AstFactory.doubleLiteral(4.2));
+ _assertCloneExpression('4.2');
}
void test_visitEmptyFunctionBody() {
- _assertClone(AstFactory.emptyFunctionBody());
+ _assertCloneUnitMember('main() {}');
}
void test_visitEmptyStatement() {
- _assertClone(AstFactory.emptyStatement());
+ _assertCloneUnitMember('main() { ; }');
}
void test_visitExportDirective_combinator() {
- _assertClone(AstFactory.exportDirective2("a.dart", [
- AstFactory.showCombinator([AstFactory.identifier3("A")])
- ]));
+ _assertCloneUnit('export "a.dart" show A;');
}
void test_visitExportDirective_combinators() {
- _assertClone(AstFactory.exportDirective2("a.dart", [
- AstFactory.showCombinator([AstFactory.identifier3("A")]),
- AstFactory.hideCombinator([AstFactory.identifier3("B")])
- ]));
+ _assertCloneUnit('export "a.dart" show A hide B;');
}
void test_visitExportDirective_minimal() {
- _assertClone(AstFactory.exportDirective2("a.dart"));
+ _assertCloneUnit('export "a.dart";');
}
void test_visitExportDirective_withMetadata() {
- ExportDirective directive = AstFactory.exportDirective2("a.dart");
- directive.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(directive);
+ _assertCloneUnit('@deprecated export "a.dart";');
}
void test_visitExpressionFunctionBody() {
- _assertClone(
- AstFactory.expressionFunctionBody(AstFactory.identifier3("a")));
+ _assertCloneUnitMember('main() => a;');
}
void test_visitExpressionStatement() {
- _assertClone(AstFactory.expressionStatement(AstFactory.identifier3("a")));
+ _assertCloneStatement('a;');
}
void test_visitExtendsClause() {
- _assertClone(AstFactory.extendsClause(AstFactory.typeName4("C")));
+ _assertCloneUnitMember('class A extends B {}');
}
void test_visitFieldDeclaration_instance() {
- _assertClone(AstFactory.fieldDeclaration2(
- false, Keyword.VAR, [AstFactory.variableDeclaration("a")]));
+ _assertCloneUnitMember('class C { var a; }');
}
void test_visitFieldDeclaration_static() {
- _assertClone(AstFactory.fieldDeclaration2(
- true, Keyword.VAR, [AstFactory.variableDeclaration("a")]));
+ _assertCloneUnitMember('class C { static var a; }');
}
void test_visitFieldDeclaration_withMetadata() {
- FieldDeclaration declaration = AstFactory.fieldDeclaration2(
- false, Keyword.VAR, [AstFactory.variableDeclaration("a")]);
- declaration.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(declaration);
+ _assertCloneUnitMember('class C { @deprecated var a; }');
}
void test_visitFieldFormalParameter_functionTyped() {
- _assertClone(AstFactory.fieldFormalParameter(
- null,
- AstFactory.typeName4("A"),
- "a",
- AstFactory
- .formalParameterList([AstFactory.simpleFormalParameter3("b")])));
+ _assertCloneUnitMember('class C { C(A this.a(b)); }');
}
void test_visitFieldFormalParameter_keyword() {
- _assertClone(AstFactory.fieldFormalParameter(Keyword.VAR, null, "a"));
+ _assertCloneUnitMember('class C { C(var this.a); }');
}
void test_visitFieldFormalParameter_keywordAndType() {
- _assertClone(AstFactory.fieldFormalParameter(
- Keyword.FINAL, AstFactory.typeName4("A"), "a"));
+ _assertCloneUnitMember('class C { C(final A this.a); }');
}
void test_visitFieldFormalParameter_type() {
- _assertClone(
- AstFactory.fieldFormalParameter(null, AstFactory.typeName4("A"), "a"));
+ _assertCloneUnitMember('class C { C(A this.a); }');
}
void test_visitForEachStatement_declared() {
- _assertClone(AstFactory.forEachStatement(
- AstFactory.declaredIdentifier3("a"),
- AstFactory.identifier3("b"),
- AstFactory.block()));
+ _assertCloneStatement('for (var a in b) {}');
}
void test_visitForEachStatement_variable() {
- _assertClone(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()));
+ _assertCloneStatement('for (a in b) {}');
}
void test_visitForEachStatement_variable_await() {
- _assertClone(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()));
+ _assertCloneUnitMember('main(s) async { await for (a in s) {} }');
}
void test_visitFormalParameterList_empty() {
- _assertClone(AstFactory.formalParameterList());
+ _assertCloneUnitMember('main() {}');
}
void test_visitFormalParameterList_n() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0))
- ]));
+ _assertCloneUnitMember('main({a: 0}) {}');
}
void test_visitFormalParameterList_nn() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0)),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
- ]));
+ _assertCloneUnitMember('main({a: 0, b: 1}) {}');
}
void test_visitFormalParameterList_p() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0))
- ]));
+ _assertCloneUnitMember('main([a = 0]) {}');
}
void test_visitFormalParameterList_pp() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("a"), AstFactory.integer(0)),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
- ]));
+ _assertCloneUnitMember('main([a = 0, b = 1]) {}');
}
void test_visitFormalParameterList_r() {
- _assertClone(AstFactory
- .formalParameterList([AstFactory.simpleFormalParameter3("a")]));
+ _assertCloneUnitMember('main(a) {}');
}
void test_visitFormalParameterList_rn() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
- ]));
+ _assertCloneUnitMember('main(a, {b: 1}) {}');
}
void test_visitFormalParameterList_rnn() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1)),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(2))
- ]));
+ _assertCloneUnitMember('main(a, {b: 1, c: 2}) {}');
}
void test_visitFormalParameterList_rp() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1))
- ]));
+ _assertCloneUnitMember('main(a, [b = 1]) {}');
}
void test_visitFormalParameterList_rpp() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("b"), AstFactory.integer(1)),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(2))
- ]));
+ _assertCloneUnitMember('main(a, [b = 1, c = 2]) {}');
}
void test_visitFormalParameterList_rr() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.simpleFormalParameter3("b")
- ]));
+ _assertCloneUnitMember('main(a, b) {}');
}
void test_visitFormalParameterList_rrn() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.simpleFormalParameter3("b"),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3))
- ]));
+ _assertCloneUnitMember('main(a, b, {c: 3}) {}');
}
void test_visitFormalParameterList_rrnn() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.simpleFormalParameter3("b"),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3)),
- AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter3("d"), AstFactory.integer(4))
- ]));
+ _assertCloneUnitMember('main(a, b, {c: 3, d: 4}) {}');
}
void test_visitFormalParameterList_rrp() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.simpleFormalParameter3("b"),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3))
- ]));
+ _assertCloneUnitMember('main(a, b, [c = 3]) {}');
}
void test_visitFormalParameterList_rrpp() {
- _assertClone(AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter3("a"),
- AstFactory.simpleFormalParameter3("b"),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("c"), AstFactory.integer(3)),
- AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter3("d"), AstFactory.integer(4))
- ]));
+ _assertCloneUnitMember('main(a, b, [c = 3, d = 4]) {}');
}
void test_visitForStatement_c() {
- _assertClone(AstFactory.forStatement(
- null, AstFactory.identifier3("c"), null, AstFactory.block()));
+ _assertCloneStatement('for (; c;) {}');
}
void test_visitForStatement_cu() {
- _assertClone(AstFactory.forStatement(null, AstFactory.identifier3("c"),
- [AstFactory.identifier3("u")], AstFactory.block()));
+ _assertCloneStatement('for (; c; u) {}');
}
void test_visitForStatement_e() {
- _assertClone(AstFactory.forStatement(
- AstFactory.identifier3("e"), null, null, AstFactory.block()));
+ _assertCloneStatement('for (e; ;) {}');
}
void test_visitForStatement_ec() {
- _assertClone(AstFactory.forStatement(AstFactory.identifier3("e"),
- AstFactory.identifier3("c"), null, AstFactory.block()));
+ _assertCloneStatement('for (e; c;) {}');
}
void test_visitForStatement_ecu() {
- _assertClone(AstFactory.forStatement(
- AstFactory.identifier3("e"),
- AstFactory.identifier3("c"),
- [AstFactory.identifier3("u")],
- AstFactory.block()));
+ _assertCloneStatement('for (e; c; u) {}');
}
void test_visitForStatement_eu() {
- _assertClone(AstFactory.forStatement(AstFactory.identifier3("e"), null,
- [AstFactory.identifier3("u")], AstFactory.block()));
+ _assertCloneStatement('for (e; ; u) {}');
}
void test_visitForStatement_i() {
- _assertClone(AstFactory.forStatement2(
- AstFactory.variableDeclarationList2(
- Keyword.VAR, [AstFactory.variableDeclaration("i")]),
- null,
- null,
- AstFactory.block()));
+ _assertCloneStatement('for (var i; ;) {}');
}
void test_visitForStatement_ic() {
- _assertClone(AstFactory.forStatement2(
- AstFactory.variableDeclarationList2(
- Keyword.VAR, [AstFactory.variableDeclaration("i")]),
- AstFactory.identifier3("c"),
- null,
- AstFactory.block()));
+ _assertCloneStatement('for (var i; c;) {}');
}
void test_visitForStatement_icu() {
- _assertClone(AstFactory.forStatement2(
- AstFactory.variableDeclarationList2(
- Keyword.VAR, [AstFactory.variableDeclaration("i")]),
- AstFactory.identifier3("c"),
- [AstFactory.identifier3("u")],
- AstFactory.block()));
+ _assertCloneStatement('for (var i; c; u) {}');
}
void test_visitForStatement_iu() {
- _assertClone(AstFactory.forStatement2(
- AstFactory.variableDeclarationList2(
- Keyword.VAR, [AstFactory.variableDeclaration("i")]),
- null,
- [AstFactory.identifier3("u")],
- AstFactory.block()));
+ _assertCloneStatement('for (var i; ; u) {}');
}
void test_visitForStatement_u() {
- _assertClone(AstFactory.forStatement(
- null, null, [AstFactory.identifier3("u")], AstFactory.block()));
+ _assertCloneStatement('for (; ; u) {}');
}
void test_visitFunctionDeclaration_getter() {
- _assertClone(AstFactory.functionDeclaration(
- null, Keyword.GET, "f", AstFactory.functionExpression()));
+ _assertCloneUnitMember('get f {}');
}
void test_visitFunctionDeclaration_normal() {
- _assertClone(AstFactory.functionDeclaration(
- null, null, "f", AstFactory.functionExpression()));
+ _assertCloneUnitMember('f() {}');
}
void test_visitFunctionDeclaration_setter() {
- _assertClone(AstFactory.functionDeclaration(
- null, Keyword.SET, "f", AstFactory.functionExpression()));
+ _assertCloneUnitMember('set f(x) {}');
}
void test_visitFunctionDeclaration_withMetadata() {
- FunctionDeclaration declaration = AstFactory.functionDeclaration(
- null, null, "f", AstFactory.functionExpression());
- declaration.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(declaration);
+ _assertCloneUnitMember('@deprecated f() {}');
}
void test_visitFunctionDeclarationStatement() {
- _assertClone(AstFactory.functionDeclarationStatement(
- null, null, "f", AstFactory.functionExpression()));
- }
-
- void test_visitFunctionExpression() {
- _assertClone(AstFactory.functionExpression());
+ _assertCloneStatement('f() {}');
}
void test_visitFunctionExpressionInvocation() {
- _assertClone(
- AstFactory.functionExpressionInvocation(AstFactory.identifier3("f")));
+ _assertCloneStatement('{ () {}(); }');
}
void test_visitFunctionTypeAlias_generic() {
- _assertClone(AstFactory.typeAlias(AstFactory.typeName4("A"), "F",
- AstFactory.typeParameterList(["B"]), AstFactory.formalParameterList()));
+ _assertCloneUnitMember('typedef A F<B>();');
}
void test_visitFunctionTypeAlias_nonGeneric() {
- _assertClone(AstFactory.typeAlias(AstFactory.typeName4("A"), "F", null,
- AstFactory.formalParameterList()));
+ _assertCloneUnitMember('typedef A F();');
}
void test_visitFunctionTypeAlias_withMetadata() {
- FunctionTypeAlias declaration = AstFactory.typeAlias(
- AstFactory.typeName4("A"), "F", null, AstFactory.formalParameterList());
- declaration.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(declaration);
+ _assertCloneUnitMember('@deprecated typedef A F();');
}
void test_visitFunctionTypedFormalParameter_noType() {
- _assertClone(AstFactory.functionTypedFormalParameter(null, "f"));
+ _assertCloneUnitMember('main( f() ) {}');
}
void test_visitFunctionTypedFormalParameter_type() {
- _assertClone(AstFactory.functionTypedFormalParameter(
- AstFactory.typeName4("T"), "f"));
+ _assertCloneUnitMember('main( T f() ) {}');
}
void test_visitIfStatement_withElse() {
- _assertClone(AstFactory.ifStatement2(
- AstFactory.identifier3("c"), AstFactory.block(), AstFactory.block()));
+ _assertCloneStatement('if (c) {} else {}');
}
void test_visitIfStatement_withoutElse() {
- _assertClone(AstFactory.ifStatement(
- AstFactory.identifier3("c"), AstFactory.block()));
+ _assertCloneStatement('if (c) {}');
}
void test_visitImplementsClause_multiple() {
- _assertClone(AstFactory.implementsClause(
- [AstFactory.typeName4("A"), AstFactory.typeName4("B")]));
+ _assertCloneUnitMember('class A implements B, C {}');
}
void test_visitImplementsClause_single() {
- _assertClone(AstFactory.implementsClause([AstFactory.typeName4("A")]));
+ _assertCloneUnitMember('class A implements B {}');
}
void test_visitImportDirective_combinator() {
- _assertClone(AstFactory.importDirective3("a.dart", null, [
- AstFactory.showCombinator([AstFactory.identifier3("A")])
- ]));
+ _assertCloneUnit('import "a.dart" show A;');
}
void test_visitImportDirective_combinators() {
- _assertClone(AstFactory.importDirective3("a.dart", null, [
- AstFactory.showCombinator([AstFactory.identifier3("A")]),
- AstFactory.hideCombinator([AstFactory.identifier3("B")])
- ]));
+ _assertCloneUnit('import "a.dart" show A hide B;');
}
void test_visitImportDirective_minimal() {
- _assertClone(AstFactory.importDirective3("a.dart", null));
+ _assertCloneUnit('import "a.dart";');
}
void test_visitImportDirective_prefix() {
- _assertClone(AstFactory.importDirective3("a.dart", "p"));
+ _assertCloneUnit('import "a.dart" as p;');
}
void test_visitImportDirective_prefix_combinator() {
- _assertClone(AstFactory.importDirective3("a.dart", "p", [
- AstFactory.showCombinator([AstFactory.identifier3("A")])
- ]));
+ _assertCloneUnit('import "a.dart" as p show A;');
}
void test_visitImportDirective_prefix_combinators() {
- _assertClone(AstFactory.importDirective3("a.dart", "p", [
- AstFactory.showCombinator([AstFactory.identifier3("A")]),
- AstFactory.hideCombinator([AstFactory.identifier3("B")])
- ]));
+ _assertCloneUnit('import "a.dart" as p show A hide B;');
}
void test_visitImportDirective_withMetadata() {
- ImportDirective directive = AstFactory.importDirective3("a.dart", null);
- directive.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(directive);
+ _assertCloneUnit('@deprecated import "a.dart";');
}
void test_visitImportHideCombinator_multiple() {
- _assertClone(AstFactory.hideCombinator(
- [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+ _assertCloneUnit('import "a.dart" hide a, b;');
}
void test_visitImportHideCombinator_single() {
- _assertClone(AstFactory.hideCombinator([AstFactory.identifier3("a")]));
+ _assertCloneUnit('import "a.dart" hide a;');
}
void test_visitImportShowCombinator_multiple() {
- _assertClone(AstFactory.showCombinator(
- [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+ _assertCloneUnit('import "a.dart" show a, b;');
}
void test_visitImportShowCombinator_single() {
- _assertClone(AstFactory.showCombinator([AstFactory.identifier3("a")]));
+ _assertCloneUnit('import "a.dart" show a;');
}
void test_visitIndexExpression() {
- _assertClone(AstFactory.indexExpression(
- AstFactory.identifier3("a"), AstFactory.identifier3("i")));
+ _assertCloneExpression('a[i]');
}
void test_visitInstanceCreationExpression_const() {
- _assertClone(AstFactory.instanceCreationExpression2(
- Keyword.CONST, AstFactory.typeName4("C")));
+ _assertCloneExpression('const C()');
}
void test_visitInstanceCreationExpression_named() {
- _assertClone(AstFactory.instanceCreationExpression3(
- Keyword.NEW, AstFactory.typeName4("C"), "c"));
+ _assertCloneExpression('new C.c()');
}
void test_visitInstanceCreationExpression_unnamed() {
- _assertClone(AstFactory.instanceCreationExpression2(
- Keyword.NEW, AstFactory.typeName4("C")));
+ _assertCloneExpression('new C()');
}
void test_visitIntegerLiteral() {
- _assertClone(AstFactory.integer(42));
+ _assertCloneExpression('42');
}
void test_visitInterpolationExpression_expression() {
- _assertClone(
- AstFactory.interpolationExpression(AstFactory.identifier3("a")));
+ _assertCloneExpression(r'"${c}"');
}
void test_visitInterpolationExpression_identifier() {
- _assertClone(AstFactory.interpolationExpression2("a"));
- }
-
- void test_visitInterpolationString() {
- _assertClone(AstFactory.interpolationString("'x", "x"));
+ _assertCloneExpression(r'"$c"');
}
void test_visitIsExpression_negated() {
- _assertClone(AstFactory.isExpression(
- AstFactory.identifier3("a"), true, AstFactory.typeName4("C")));
+ _assertCloneExpression('a is! C');
}
void test_visitIsExpression_normal() {
- _assertClone(AstFactory.isExpression(
- AstFactory.identifier3("a"), false, AstFactory.typeName4("C")));
+ _assertCloneExpression('a is C');
}
void test_visitLabel() {
- _assertClone(AstFactory.label2("a"));
+ _assertCloneStatement('a: return;');
}
void test_visitLabeledStatement_multiple() {
- _assertClone(AstFactory.labeledStatement(
- [AstFactory.label2("a"), AstFactory.label2("b")],
- AstFactory.returnStatement()));
+ _assertCloneStatement('a: b: return;');
}
void test_visitLabeledStatement_single() {
- _assertClone(AstFactory.labeledStatement(
- [AstFactory.label2("a")], AstFactory.returnStatement()));
+ _assertCloneStatement('a: return;');
}
void test_visitLibraryDirective() {
- _assertClone(AstFactory.libraryDirective2("l"));
+ _assertCloneUnit('library l;');
}
void test_visitLibraryDirective_withMetadata() {
- LibraryDirective directive = AstFactory.libraryDirective2("l");
- directive.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(directive);
+ _assertCloneUnit('@deprecated library l;');
}
void test_visitLibraryIdentifier_multiple() {
- _assertClone(AstFactory.libraryIdentifier([
- AstFactory.identifier3("a"),
- AstFactory.identifier3("b"),
- AstFactory.identifier3("c")
- ]));
+ _assertCloneUnit('library a.b.c;');
}
void test_visitLibraryIdentifier_single() {
- _assertClone(AstFactory.libraryIdentifier([AstFactory.identifier3("a")]));
+ _assertCloneUnit('library a;');
}
void test_visitListLiteral_const() {
- _assertClone(AstFactory.listLiteral2(Keyword.CONST, null));
+ _assertCloneExpression('const []');
}
void test_visitListLiteral_empty() {
- _assertClone(AstFactory.listLiteral());
+ _assertCloneExpression('[]');
}
void test_visitListLiteral_nonEmpty() {
- _assertClone(AstFactory.listLiteral([
- AstFactory.identifier3("a"),
- AstFactory.identifier3("b"),
- AstFactory.identifier3("c")
- ]));
+ _assertCloneExpression('[a, b, c]');
}
void test_visitMapLiteral_const() {
- _assertClone(AstFactory.mapLiteral(Keyword.CONST, null));
+ _assertCloneExpression('const {}');
}
void test_visitMapLiteral_empty() {
- _assertClone(AstFactory.mapLiteral2());
+ _assertCloneExpression('{}');
}
void test_visitMapLiteral_nonEmpty() {
- _assertClone(AstFactory.mapLiteral2([
- AstFactory.mapLiteralEntry("a", AstFactory.identifier3("a")),
- AstFactory.mapLiteralEntry("b", AstFactory.identifier3("b")),
- AstFactory.mapLiteralEntry("c", AstFactory.identifier3("c"))
- ]));
- }
-
- void test_visitMapLiteralEntry() {
- _assertClone(AstFactory.mapLiteralEntry("a", AstFactory.identifier3("b")));
+ _assertCloneExpression('{a: a, b: b, c: c}');
}
void test_visitMethodDeclaration_external() {
- _assertClone(AstFactory.methodDeclaration(null, null, null, null,
- AstFactory.identifier3("m"), AstFactory.formalParameterList()));
+ _assertCloneUnitMember('class C { external m(); }');
}
void test_visitMethodDeclaration_external_returnType() {
- _assertClone(AstFactory.methodDeclaration(
- null,
- AstFactory.typeName4("T"),
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList()));
+ _assertCloneUnitMember('class C { T m(); }');
}
void test_visitMethodDeclaration_getter() {
- _assertClone(AstFactory.methodDeclaration2(null, null, Keyword.GET, null,
- AstFactory.identifier3("m"), null, AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { get m {} }');
}
void test_visitMethodDeclaration_getter_returnType() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- AstFactory.typeName4("T"),
- Keyword.GET,
- null,
- AstFactory.identifier3("m"),
- null,
- AstFactory.blockFunctionBody2()));
- }
-
- void test_visitMethodDeclaration_getter_seturnType() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- AstFactory.typeName4("T"),
- Keyword.SET,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(
- [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { T get m {} }');
}
void test_visitMethodDeclaration_minimal() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- null,
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { m() {} }');
}
void test_visitMethodDeclaration_multipleParameters() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- null,
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList([
- AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
- AstFactory.simpleFormalParameter(Keyword.VAR, "b")
- ]),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { m(var a, var b) {} }');
}
void test_visitMethodDeclaration_operator() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- null,
- null,
- Keyword.OPERATOR,
- AstFactory.identifier3("+"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { operator+() {} }');
}
void test_visitMethodDeclaration_operator_returnType() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- AstFactory.typeName4("T"),
- null,
- Keyword.OPERATOR,
- AstFactory.identifier3("+"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { T operator+() {} }');
}
void test_visitMethodDeclaration_returnType() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- AstFactory.typeName4("T"),
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { T m() {} }');
}
void test_visitMethodDeclaration_setter() {
- _assertClone(AstFactory.methodDeclaration2(
- null,
- null,
- Keyword.SET,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(
- [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { set m(var v) {} }');
+ }
+
+ void test_visitMethodDeclaration_setter_returnType() {
+ _assertCloneUnitMember('class C { T set m(v) {} }');
}
void test_visitMethodDeclaration_static() {
- _assertClone(AstFactory.methodDeclaration2(
- Keyword.STATIC,
- null,
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { static m() {} }');
}
void test_visitMethodDeclaration_static_returnType() {
- _assertClone(AstFactory.methodDeclaration2(
- Keyword.STATIC,
- AstFactory.typeName4("T"),
- null,
- null,
- AstFactory.identifier3("m"),
- AstFactory.formalParameterList(),
- AstFactory.blockFunctionBody2()));
+ _assertCloneUnitMember('class C { static T m() {} }');
}
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")));
- _assertClone(declaration);
+ _assertCloneUnitMember('class C { @deprecated m() {} }');
}
void test_visitMethodInvocation_noTarget() {
- _assertClone(AstFactory.methodInvocation2("m"));
+ _assertCloneExpression('m()');
}
void test_visitMethodInvocation_target() {
- _assertClone(AstFactory.methodInvocation(AstFactory.identifier3("t"), "m"));
+ _assertCloneExpression('t.m()');
}
void test_visitNamedExpression() {
- _assertClone(AstFactory.namedExpression2("a", AstFactory.identifier3("b")));
- }
-
- void test_visitNamedFormalParameter() {
- _assertClone(AstFactory.namedFormalParameter(
- AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
- AstFactory.integer(0)));
+ _assertCloneExpression('m(a: b)');
}
void test_visitNativeClause() {
- _assertClone(AstFactory.nativeClause("code"));
+ _assertCloneUnitMember('f() native "code";');
}
void test_visitNativeFunctionBody() {
- _assertClone(AstFactory.nativeFunctionBody("str"));
+ _assertCloneUnitMember('f() native "str";');
}
void test_visitNullLiteral() {
- _assertClone(AstFactory.nullLiteral());
+ _assertCloneExpression('null');
}
void test_visitParenthesizedExpression() {
- _assertClone(
- AstFactory.parenthesizedExpression(AstFactory.identifier3("a")));
+ _assertCloneExpression('(a)');
}
void test_visitPartDirective() {
- _assertClone(AstFactory.partDirective2("a.dart"));
+ _assertCloneUnit('part "a.dart";');
}
void test_visitPartDirective_withMetadata() {
- PartDirective directive = AstFactory.partDirective2("a.dart");
- directive.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(directive);
+ _assertCloneUnit('@deprecated part "a.dart";');
}
void test_visitPartOfDirective() {
- _assertClone(
- AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"])));
+ _assertCloneUnit('part of l;');
}
void test_visitPartOfDirective_withMetadata() {
- PartOfDirective directive =
- AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"]));
- directive.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(directive);
+ _assertCloneUnit('@deprecated part of l;');
}
void test_visitPositionalFormalParameter() {
- _assertClone(AstFactory.positionalFormalParameter(
- AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
- AstFactory.integer(0)));
+ _assertCloneUnitMember('main([var p = 0]) {}');
}
void test_visitPostfixExpression() {
- _assertClone(AstFactory.postfixExpression(
- AstFactory.identifier3("a"), TokenType.PLUS_PLUS));
+ _assertCloneExpression('a++');
}
void test_visitPrefixedIdentifier() {
- _assertClone(AstFactory.identifier5("a", "b"));
+ _assertCloneExpression('a.b');
}
void test_visitPrefixExpression() {
- _assertClone(AstFactory.prefixExpression(
- TokenType.MINUS, AstFactory.identifier3("a")));
+ _assertCloneExpression('-a');
}
void test_visitPropertyAccess() {
- _assertClone(AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"));
+ _assertCloneExpression('a.b.c');
}
void test_visitRedirectingConstructorInvocation_named() {
- _assertClone(AstFactory.redirectingConstructorInvocation2("c"));
+ _assertCloneUnitMember('class A { factory A() = B.b; }');
}
void test_visitRedirectingConstructorInvocation_unnamed() {
- _assertClone(AstFactory.redirectingConstructorInvocation());
+ _assertCloneUnitMember('class A { factory A() = B; }');
}
void test_visitRethrowExpression() {
- _assertClone(AstFactory.rethrowExpression());
+ _assertCloneExpression('rethrow');
}
void test_visitReturnStatement_expression() {
- _assertClone(AstFactory.returnStatement2(AstFactory.identifier3("a")));
+ _assertCloneStatement('return a;');
}
void test_visitReturnStatement_noExpression() {
- _assertClone(AstFactory.returnStatement());
+ _assertCloneStatement('return;');
}
void test_visitScriptTag() {
- String scriptTag = "!#/bin/dart.exe";
- _assertClone(AstFactory.scriptTag(scriptTag));
+ _assertCloneUnit('#!/bin/dart.exe');
}
void test_visitSimpleFormalParameter_keyword() {
- _assertClone(AstFactory.simpleFormalParameter(Keyword.VAR, "a"));
+ _assertCloneUnitMember('main(var a) {}');
}
void test_visitSimpleFormalParameter_keyword_type() {
- _assertClone(AstFactory.simpleFormalParameter2(
- Keyword.FINAL, AstFactory.typeName4("A"), "a"));
+ _assertCloneUnitMember('main(final A a) {}');
}
void test_visitSimpleFormalParameter_type() {
- _assertClone(
- AstFactory.simpleFormalParameter4(AstFactory.typeName4("A"), "a"));
+ _assertCloneUnitMember('main(A a) {}');
}
void test_visitSimpleIdentifier() {
- _assertClone(AstFactory.identifier3("a"));
+ _assertCloneExpression('a');
}
void test_visitSimpleStringLiteral() {
- _assertClone(AstFactory.string2("a"));
+ _assertCloneExpression("'a'");
}
void test_visitStringInterpolation() {
- _assertClone(AstFactory.string([
- AstFactory.interpolationString("'a", "a"),
- AstFactory.interpolationExpression(AstFactory.identifier3("e")),
- AstFactory.interpolationString("b'", "b")
- ]));
+ _assertCloneExpression(r"'a${e}b'");
}
void test_visitSuperConstructorInvocation() {
- _assertClone(AstFactory.superConstructorInvocation());
+ _assertCloneUnitMember('class C { C() : super(); }');
}
void test_visitSuperConstructorInvocation_named() {
- _assertClone(AstFactory.superConstructorInvocation2("c"));
+ _assertCloneUnitMember('class C { C() : super.c(); }');
}
void test_visitSuperExpression() {
- _assertClone(AstFactory.superExpression());
+ _assertCloneUnitMember('class C { m() { super.m(); } }');
}
void test_visitSwitchCase_multipleLabels() {
- _assertClone(AstFactory.switchCase2(
- [AstFactory.label2("l1"), AstFactory.label2("l2")],
- AstFactory.identifier3("a"),
- [AstFactory.block()]));
+ _assertCloneStatement('switch (v) {l1: l2: case a: {} }');
}
void test_visitSwitchCase_multipleStatements() {
- _assertClone(AstFactory.switchCase(
- AstFactory.identifier3("a"), [AstFactory.block(), AstFactory.block()]));
+ _assertCloneStatement('switch (v) { case a: {} {} }');
}
void test_visitSwitchCase_noLabels() {
- _assertClone(AstFactory
- .switchCase(AstFactory.identifier3("a"), [AstFactory.block()]));
+ _assertCloneStatement('switch (v) { case a: {} }');
}
void test_visitSwitchCase_singleLabel() {
- _assertClone(AstFactory.switchCase2([AstFactory.label2("l1")],
- AstFactory.identifier3("a"), [AstFactory.block()]));
+ _assertCloneStatement('switch (v) { l1: case a: {} }');
}
void test_visitSwitchDefault_multipleLabels() {
- _assertClone(AstFactory.switchDefault(
- [AstFactory.label2("l1"), AstFactory.label2("l2")],
- [AstFactory.block()]));
+ _assertCloneStatement('switch (v) { l1: l2: default: {} }');
}
void test_visitSwitchDefault_multipleStatements() {
- _assertClone(
- AstFactory.switchDefault2([AstFactory.block(), AstFactory.block()]));
+ _assertCloneStatement('switch (v) { default: {} {} }');
}
void test_visitSwitchDefault_noLabels() {
- _assertClone(AstFactory.switchDefault2([AstFactory.block()]));
+ _assertCloneStatement('switch (v) { default: {} }');
}
void test_visitSwitchDefault_singleLabel() {
- _assertClone(AstFactory
- .switchDefault([AstFactory.label2("l1")], [AstFactory.block()]));
+ _assertCloneStatement('switch (v) { l1: default: {} }');
}
void test_visitSwitchStatement() {
- _assertClone(AstFactory.switchStatement(AstFactory.identifier3("a"), [
- AstFactory.switchCase(AstFactory.string2("b"), [AstFactory.block()]),
- AstFactory.switchDefault2([AstFactory.block()])
- ]));
+ _assertCloneStatement('switch (a) { case b: {} default: {} }');
}
void test_visitSymbolLiteral_multiple() {
- _assertClone(AstFactory.symbolLiteral(["a", "b", "c"]));
+ _assertCloneExpression('#a.b.c');
}
void test_visitSymbolLiteral_single() {
- _assertClone(AstFactory.symbolLiteral(["a"]));
+ _assertCloneExpression('#a');
}
void test_visitThisExpression() {
- _assertClone(AstFactory.thisExpression());
+ _assertCloneExpression('this');
}
void test_visitThrowStatement() {
- _assertClone(AstFactory.throwExpression2(AstFactory.identifier3("e")));
+ _assertCloneStatement('throw e;');
}
void test_visitTopLevelVariableDeclaration_multiple() {
- _assertClone(AstFactory.topLevelVariableDeclaration2(
- Keyword.VAR, [AstFactory.variableDeclaration("a")]));
+ _assertCloneUnitMember('var a;');
}
void test_visitTopLevelVariableDeclaration_single() {
- _assertClone(AstFactory.topLevelVariableDeclaration2(Keyword.VAR, [
- AstFactory.variableDeclaration("a"),
- AstFactory.variableDeclaration("b")
- ]));
+ _assertCloneUnitMember('var a, b;');
}
void test_visitTryStatement_catch() {
- _assertClone(AstFactory.tryStatement2(AstFactory.block(),
- [AstFactory.catchClause3(AstFactory.typeName4("E"))]));
+ _assertCloneStatement('try {} on E {}');
}
void test_visitTryStatement_catches() {
- _assertClone(AstFactory.tryStatement2(AstFactory.block(), [
- AstFactory.catchClause3(AstFactory.typeName4("E")),
- AstFactory.catchClause3(AstFactory.typeName4("F"))
- ]));
+ _assertCloneStatement('try {} on E {} on F {}');
}
void test_visitTryStatement_catchFinally() {
- _assertClone(AstFactory.tryStatement3(
- AstFactory.block(),
- [AstFactory.catchClause3(AstFactory.typeName4("E"))],
- AstFactory.block()));
+ _assertCloneStatement('try {} on E {} finally {}');
}
void test_visitTryStatement_finally() {
- _assertClone(
- AstFactory.tryStatement(AstFactory.block(), AstFactory.block()));
- }
-
- void test_visitTypeArgumentList_multiple() {
- _assertClone(AstFactory.typeArgumentList(
- [AstFactory.typeName4("E"), AstFactory.typeName4("F")]));
- }
-
- void test_visitTypeArgumentList_single() {
- _assertClone(AstFactory.typeArgumentList([AstFactory.typeName4("E")]));
+ _assertCloneStatement('try {} finally {}');
}
void test_visitTypeName_multipleArgs() {
- _assertClone(AstFactory.typeName4(
- "C", [AstFactory.typeName4("D"), AstFactory.typeName4("E")]));
+ _assertCloneExpression('new C<D, E>()');
}
void test_visitTypeName_nestedArg() {
- _assertClone(AstFactory.typeName4("C", [
- AstFactory.typeName4("D", [AstFactory.typeName4("E")])
- ]));
+ _assertCloneExpression('new C<D<E>>()');
}
void test_visitTypeName_noArgs() {
- _assertClone(AstFactory.typeName4("C"));
+ _assertCloneExpression('new C()');
}
void test_visitTypeName_singleArg() {
- _assertClone(AstFactory.typeName4("C", [AstFactory.typeName4("D")]));
+ _assertCloneExpression('new C<D>()');
}
void test_visitTypeParameter_withExtends() {
- _assertClone(AstFactory.typeParameter2("E", AstFactory.typeName4("C")));
+ _assertCloneUnitMember('class A<E extends C> {}');
}
void test_visitTypeParameter_withMetadata() {
- TypeParameter parameter = AstFactory.typeParameter("E");
- parameter.metadata
- .add(AstFactory.annotation(AstFactory.identifier3("deprecated")));
- _assertClone(parameter);
+ _assertCloneUnitMember('class A<@deprecated E> {}');
}
void test_visitTypeParameter_withoutExtends() {
- _assertClone(AstFactory.typeParameter("E"));
+ _assertCloneUnitMember('class A<E> {}');
}
void test_visitTypeParameterList_multiple() {
- _assertClone(AstFactory.typeParameterList(["E", "F"]));
+ _assertCloneUnitMember('class A<E, F> {}');
}
void test_visitTypeParameterList_single() {
- _assertClone(AstFactory.typeParameterList(["E"]));
+ _assertCloneUnitMember('class A<E> {}');
}
void test_visitVariableDeclaration_initialized() {
- _assertClone(
- AstFactory.variableDeclaration2("a", AstFactory.identifier3("b")));
+ _assertCloneStatement('var a = b;');
}
void test_visitVariableDeclaration_uninitialized() {
- _assertClone(AstFactory.variableDeclaration("a"));
+ _assertCloneStatement('var a;');
}
void test_visitVariableDeclarationList_const_type() {
- _assertClone(AstFactory.variableDeclarationList(
- Keyword.CONST, AstFactory.typeName4("C"), [
- AstFactory.variableDeclaration("a"),
- AstFactory.variableDeclaration("b")
- ]));
+ _assertCloneStatement('const C a, b;');
}
void test_visitVariableDeclarationList_final_noType() {
- _assertClone(AstFactory.variableDeclarationList2(Keyword.FINAL, [
- AstFactory.variableDeclaration("a"),
- AstFactory.variableDeclaration("b")
- ]));
+ _assertCloneStatement('final a, 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")));
- _assertClone(declarationList);
+ _assertCloneStatement('@deprecated final a, b;');
}
void test_visitVariableDeclarationList_type() {
- _assertClone(AstFactory.variableDeclarationList(
- null, AstFactory.typeName4("C"), [
- AstFactory.variableDeclaration("a"),
- AstFactory.variableDeclaration("b")
- ]));
+ _assertCloneStatement('C a, b;');
}
void test_visitVariableDeclarationList_var() {
- _assertClone(AstFactory.variableDeclarationList2(Keyword.VAR, [
- AstFactory.variableDeclaration("a"),
- AstFactory.variableDeclaration("b")
- ]));
+ _assertCloneStatement('var a, b;');
}
void test_visitVariableDeclarationStatement() {
- _assertClone(AstFactory.variableDeclarationStatement(null,
- AstFactory.typeName4("C"), [AstFactory.variableDeclaration("c")]));
+ _assertCloneStatement('C c;');
}
void test_visitWhileStatement() {
- _assertClone(AstFactory.whileStatement(
- AstFactory.identifier3("c"), AstFactory.block()));
+ _assertCloneStatement('while (c) {}');
}
void test_visitWithClause_multiple() {
- _assertClone(AstFactory.withClause([
- AstFactory.typeName4("A"),
- AstFactory.typeName4("B"),
- AstFactory.typeName4("C")
- ]));
+ _assertCloneUnitMember('class X extends Y with A, B, C {}');
}
void test_visitWithClause_single() {
- _assertClone(AstFactory.withClause([AstFactory.typeName4("A")]));
+ _assertCloneUnitMember('class X extends Y with A {}');
}
void test_visitYieldStatement() {
- _assertClone(AstFactory.yieldStatement(AstFactory.identifier3("A")));
+ _assertCloneUnitMember('main() async* { yield 42; }');
}
/**
@@ -1730,16 +1107,119 @@ class AstClonerTest extends EngineTestCase {
* @throws AFE if the visitor does not produce the expected source for the given node
*/
void _assertClone(AstNode node) {
- AstNode clone = node.accept(new AstCloner());
- AstCloneComparator comparitor = new AstCloneComparator(false);
- if (!comparitor.isEqualNodes(node, clone)) {
- fail("Failed to clone ${node.runtimeType.toString()}");
+ {
+ AstNode clone = node.accept(new AstCloner());
+ AstCloneComparator comparator = new AstCloneComparator(false);
+ if (!comparator.isEqualNodes(node, clone)) {
+ fail("Failed to clone ${node.runtimeType.toString()}");
+ }
+ _assertEqualTokens(clone, node);
}
+ {
+ AstNode clone = node.accept(new AstCloner(true));
+ AstCloneComparator comparator = new AstCloneComparator(true);
+ if (!comparator.isEqualNodes(node, clone)) {
+ fail("Failed to clone ${node.runtimeType.toString()}");
+ }
+ _assertEqualTokens(clone, node);
+ }
+ }
- clone = node.accept(new AstCloner(true));
- comparitor = new AstCloneComparator(true);
- if (!comparitor.isEqualNodes(node, clone)) {
- fail("Failed to clone ${node.runtimeType.toString()}");
+ void _assertCloneExpression(String code) {
+ AstNode node = _parseExpression(code);
+ _assertClone(node);
+ }
+
+ void _assertCloneStatement(String code) {
+ AstNode node = _parseStatement(code);
+ _assertClone(node);
+ }
+
+ void _assertCloneUnit(String code) {
+ AstNode node = _parseUnit(code);
+ _assertClone(node);
+ }
+
+ void _assertCloneUnitMember(String code) {
+ AstNode node = _parseUnitMember(code);
+ _assertClone(node);
+ }
+
+ Expression _parseExpression(String code) {
+ CompilationUnit unit = _parseUnit('var v = $code;');
+ TopLevelVariableDeclaration decl = unit.declarations.single;
+ return decl.variables.variables.single.initializer;
+ }
+
+ Statement _parseStatement(String code) {
+ CompilationUnit unit = _parseUnit('main() { $code }');
+ FunctionDeclaration main = unit.declarations.single;
+ BlockFunctionBody body = main.functionExpression.body;
+ return body.block.statements.single;
+ }
+
+ CompilationUnit _parseUnit(String code) {
+ GatheringErrorListener listener = new GatheringErrorListener();
+ CharSequenceReader reader = new CharSequenceReader(code);
+ Scanner scanner = new Scanner(null, reader, listener);
+ Token token = scanner.tokenize();
+ Parser parser = new Parser(null, listener);
+ CompilationUnit unit = parser.parseCompilationUnit(token);
+ expect(unit, isNotNull);
+ listener.assertNoErrors();
+ return unit;
+ }
+
+ CompilationUnitMember _parseUnitMember(String code) {
+ CompilationUnit unit = _parseUnit(code);
+ return unit.declarations.single;
+ }
+
+ static void _assertEqualToken(Token clone, Token original) {
+ expect(clone.type, original.type);
+ expect(clone.offset, original.offset);
+ expect(clone.length, original.length);
+ expect(clone.lexeme, original.lexeme);
+ }
+
+ static void _assertEqualTokens(AstNode cloneNode, AstNode originalNode) {
+ Token clone = cloneNode.beginToken;
+ Token original = originalNode.beginToken;
+ Token stopOriginalToken = originalNode.endToken.next;
+ Token skipCloneComment = null;
+ Token skipOriginalComment = null;
+ while (original != stopOriginalToken) {
+ expect(clone, isNotNull);
+ _assertEqualToken(clone, original);
+ // comments
+ {
+ Token cloneComment = clone.precedingComments;
+ Token originalComment = original.precedingComments;
+ if (cloneComment != skipCloneComment &&
+ originalComment != skipOriginalComment) {
+ while (true) {
+ if (originalComment == null) {
+ expect(cloneComment, isNull);
+ break;
+ }
+ expect(cloneComment, isNotNull);
+ _assertEqualToken(cloneComment, originalComment);
+ cloneComment = cloneComment.next;
+ originalComment = originalComment.next;
+ }
+ }
+ }
+ // next tokens
+ if (original is CommentToken) {
+ expect(clone, new isInstanceOf<CommentToken>());
+ skipOriginalComment = original;
+ skipCloneComment = clone;
+ original = (original as CommentToken).parent;
+ clone = (clone as CommentToken).parent;
+ } else {
+ clone = clone.next;
+ original = original.next;
+ }
}
}
}
« no previous file with comments | « pkg/analyzer/test/generated/incremental_resolver_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698