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

Unified Diff: dart/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java

Issue 20722006: Removed compiler/ directory from repository (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
diff --git a/dart/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java b/dart/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
deleted file mode 100644
index d86da206f6d50f323e9c13e2311f611a988340bf..0000000000000000000000000000000000000000
--- a/dart/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
+++ /dev/null
@@ -1,1741 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.google.dart.compiler.parser;
-
-import com.google.common.base.Joiner;
-import com.google.dart.compiler.DartCompilerListener;
-import com.google.dart.compiler.DartSourceTest;
-import com.google.dart.compiler.ast.DartAnnotation;
-import com.google.dart.compiler.ast.DartArrayLiteral;
-import com.google.dart.compiler.ast.DartAssertStatement;
-import com.google.dart.compiler.ast.DartBinaryExpression;
-import com.google.dart.compiler.ast.DartBooleanLiteral;
-import com.google.dart.compiler.ast.DartCascadeExpression;
-import com.google.dart.compiler.ast.DartClass;
-import com.google.dart.compiler.ast.DartClassTypeAlias;
-import com.google.dart.compiler.ast.DartComment;
-import com.google.dart.compiler.ast.DartExprStmt;
-import com.google.dart.compiler.ast.DartExpression;
-import com.google.dart.compiler.ast.DartField;
-import com.google.dart.compiler.ast.DartFieldDefinition;
-import com.google.dart.compiler.ast.DartFunctionExpression;
-import com.google.dart.compiler.ast.DartIdentifier;
-import com.google.dart.compiler.ast.DartImportDirective;
-import com.google.dart.compiler.ast.DartIntegerLiteral;
-import com.google.dart.compiler.ast.DartMapLiteral;
-import com.google.dart.compiler.ast.DartMethodDefinition;
-import com.google.dart.compiler.ast.DartNode;
-import com.google.dart.compiler.ast.DartParameter;
-import com.google.dart.compiler.ast.DartPropertyAccess;
-import com.google.dart.compiler.ast.DartStatement;
-import com.google.dart.compiler.ast.DartStringInterpolation;
-import com.google.dart.compiler.ast.DartStringLiteral;
-import com.google.dart.compiler.ast.DartTryStatement;
-import com.google.dart.compiler.ast.DartTypeExpression;
-import com.google.dart.compiler.ast.DartTypeNode;
-import com.google.dart.compiler.ast.DartUnaryExpression;
-import com.google.dart.compiler.ast.DartUnit;
-import com.google.dart.compiler.ast.DartVariable;
-import com.google.dart.compiler.ast.DartVariableStatement;
-import com.google.dart.compiler.ast.NodeList;
-
-import static com.google.dart.compiler.common.ErrorExpectation.assertErrors;
-import static com.google.dart.compiler.common.ErrorExpectation.errEx;
-
-import java.util.List;
-
-public class SyntaxTest extends AbstractParserTest {
-
- public void test_parseClass_withBeforeExtends() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A with B extends C {}",
- ""),
- ParserErrorCode.WITH_BEFORE_EXTENDS, 2, 9);
- }
-
- public void test_parseClass_implementsBeforeExtends() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A implements B extends C {}",
- ""),
- ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS, 2, 9);
- }
-
- public void test_parseClass_multipleExtends() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A extends B extends C {}",
- ""),
- ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES, 2, 19);
- }
-
- public void test_parseClass_implementsBeforeWith() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A extends B implements C with D {}",
- ""),
- ParserErrorCode.IMPLEMENTS_BEFORE_WITH, 2, 19);
- }
-
- public void test_parseClass_multipleWith() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A extends B with C with D {}",
- ""),
- ParserErrorCode.MULTIPLE_WITH_CLAUSES, 2, 26);
- }
-
- public void test_parseClass_multipleImplements() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A implements B implements C {}",
- ""),
- ParserErrorCode.MULTIPLE_IMPLEMENTS_CLAUSES, 2, 22);
- }
-
- public void test_parseClass_withWithoutExtends() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A with B, C {}",
- ""),
- ParserErrorCode.WITH_WITHOUT_EXTENDS, 2, 9);
- }
-
- public void test_parseClass_with() throws Exception {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A extends B with C, D {}",
- ""));
- DartClass clazz = findNode(DartClass.class, "class A");
- NodeList<DartTypeNode> mixins = clazz.getMixins();
- assertEquals(2, mixins.size());
- assertEquals("C", mixins.get(0).toString());
- assertEquals("D", mixins.get(1).toString());
- }
-
- public void test_parseTypedefMixin() throws Exception {
- parseUnit(
- "test.dart",
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "typedef C = A with B;",
- ""));
- DartClassTypeAlias typedef = findNode(DartClassTypeAlias.class, "typedef C");
- assertEquals("A", typedef.getSuperclass().toString());
- {
- NodeList<DartTypeNode> mixins = typedef.getMixins();
- assertEquals(1, mixins.size());
- assertEquals("B", mixins.get(0).toString());
- }
- }
-
- public void test_parseTypedefMixin_abstract() throws Exception {
- parseUnit(
- "test.dart",
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "typedef C = abstract A with B;",
- ""));
- DartClassTypeAlias typedef = findNode(DartClassTypeAlias.class, "typedef C");
- assertTrue(typedef.getModifiers().isAbstract());
- }
-
- /**
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=6881
- */
- public void test_uri_adjacent() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "import 'myLib' '.dart';",
- ""));
- }
- /**
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=6881
- */
- public void test_uri_interpolation() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "import 'my$x' '.dart';",
- "var a = 'Lib';",
- ""),
- ParserErrorCode.URI_CANNOT_USE_INTERPOLATION, 1, 8);
- }
-
- public void test_exportDirective_combinators() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "library lib;",
- "export 'a.dart' show A, B hide C, D;"));
- }
-
- public void test_exportDirective_noCombinators() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "library lib;",
- "export 'a.dart';"));
- }
-
- public void test_hasParseErrors_true() {
- DartUnit unit = parseSource("garbage").getDartUnit();
- assertTrue(unit.hasParseErrors());
- }
-
- public void test_hasParseErrors_false() {
- DartUnit unit = parseSource("// empty").getDartUnit();
- assertFalse(unit.hasParseErrors());
- }
-
- public void test_importDirective_noUri() {
- DartUnit unit = parseUnit("test.dart", Joiner.on("\n").join(
- "library lib;",
- "import;"),
- ParserErrorCode.EXPECTED_TOKEN, 2, 7);
- DartImportDirective dir = (DartImportDirective) unit.getDirectives().get(1);
- assertEquals("import ;\n", dir.toSource());
- }
-
- public void test_switch_noLBrace() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "main() {",
- " switch (0)",
- "}",
- ""),
- ParserErrorCode.EXPECTED_TOKEN, 3, 12);
- }
-
- /**
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=6825
- */
- public void test_annotation_forExport() {
- parseUnit(
- "test.dart",
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "library Test;",
- "",
- "@meta @meta2 export 'Lib.dart';",
- ""));
- }
-
- /**
- * There was bug that class instead of case in switch caused infinite parsing loop.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=7999
- */
- public void test_switch_class_inCase() {
- DartParserRunner runner = parseSource(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "void main() {",
- " print((e) {",
- " switch (e) {",
- " case 'Up': cursor.(); break;",
- " class LoopClass { var myData; }",
- " case 'Down':",
- " }",
- " }); ",
- "}",
- ""));
- assertTrue(runner.getErrorCount() > 0);
- }
-
- /**
- * There was bug that handling missing identifier (method name) after "cursor." in switch caused
- * infinite parsing loop.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=6908
- */
- public void test_switch_noMethodName_inCase() {
- DartParserRunner runner = parseSource(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "void main() {",
- " print((e) {",
- " switch (e) {",
- " case 'Up': cursor.();",
- " case 'Down':",
- " }",
- " }); ",
- "}",
- ""));
- assertErrors(runner.getErrors(),
- errEx(ParserErrorCode.INVALID_IDENTIFIER, 5, 24, 1));
- }
-
- public void test_getter() {
- parseUnit("getter.dart", Joiner.on("\n").join(
- "class G {",
- " // Old getter syntax",
- " int get g1 => 1;",
- " // New getter syntax",
- " int get g2 => 2;",
- "}"));
- }
-
- public void test_identifier_as() {
- parseUnit("identifier.dart", Joiner.on("\n").join(
- "class G {",
- " int as = 0;",
- "}"));
- }
-
- public void test_patch() {
- DartUnit unit = parseUnit("patch.dart", Joiner.on("\n").join(
- "patch class A {",
- "}"));
- assertEquals(1, unit.getTopLevelNodes().size());
- }
-
- public void test_index_literalMap() {
- parseUnit("test.dart", Joiner.on('\n').join(
- "main() {",
- " try { {'1' : 1, '2' : 2}['1']++; } catch(e) {}",
- "}"));
- }
-
- public void test_redirectingFactoryConstructor_const() {
- parseUnit("redirecting.dart", Joiner.on("\n").join(
- "class B {",
- " const factory B.n(int x) = A.m;",
- "}"));
- }
-
- public void test_redirectingFactoryConstructor_nonConst() {
- parseUnit("redirecting.dart", Joiner.on("\n").join(
- "class B {",
- " factory B.n(int x) = A.m;",
- "}"));
- }
-
- public void test_setter() {
- parseUnit("setter.dart", Joiner.on("\n").join(
- "class G {",
- " void set g1(int v) {}",
- "}"));
- }
-
- public void test_cascade() {
- parseUnit(
- "cascade.dart",
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class C {",
- " var f = g..m1()..m2()..f.a;",
- " var f = g..[3].x()..y()();",
- "}"));
- // test that cascaded invocations have reasonable SourceInfo
- assertNodeSourceInfo("..m1()");
- assertNodeSourceInfo("..m2()");
- }
-
-// public void test_cascade2() {
-// DartUnit unit = parseUnit("cascade.dart", Joiner.on("\n").join(
-// "class A {",
-// " B b;",
-// "}",
-// "",
-// "class B {",
-// " void m() {}",
-// "}",
-// "",
-// "main() {",
-// " A a;",
-// " a..b.m()..b.m();",
-// "}"));
-// assertNotNull(unit);
-// }
-
- public void test_assertStatement() {
- DartUnit unit = parseUnit("function.dart", Joiner.on("\n").join(
- "main() {",
- " assert(true);",
- "}"
- ));
- assertNotNull(unit);
- assertEquals(1, unit.getTopLevelNodes().size());
- DartMethodDefinition function = (DartMethodDefinition) unit.getTopLevelNodes().get(0);
- assertNotNull(function);
- DartStatement statement = function.getFunction().getBody().getStatements().get(0);
- assertTrue(statement instanceof DartAssertStatement);
- DartExpression expression = ((DartAssertStatement) statement).getCondition();
- assertTrue(expression instanceof DartBooleanLiteral);
- }
-
- public void test_cascade_withConditionalInside() {
- DartUnit unit = parseUnit("function.dart", Joiner.on("\n").join(
- "class A {",
- " var name;",
- " foo() {}",
- "}",
- "",
- "",
- "",
- "main() {",
- " A a = new A();",
- " a",
- " ..name = true ? 'true' : 'false'",
- " ..foo();",
- "}"
- ));
- assertNotNull(unit);
- assertEquals(2, unit.getTopLevelNodes().size());
- DartMethodDefinition function = (DartMethodDefinition) unit.getTopLevelNodes().get(1);
- assertNotNull(function);
- DartStatement statement = function.getFunction().getBody().getStatements().get(1);
- assertTrue(statement instanceof DartExprStmt);
- DartCascadeExpression cascade = (DartCascadeExpression) ((DartExprStmt) statement).getExpression();
- NodeList<DartExpression> cascadeSections = cascade.getCascadeSections();
- assertEquals(2, cascadeSections.size());
- assertEquals("..name = true ? \"true\" : \"false\"", cascadeSections.get(0).toString());
- assertEquals("..foo()", cascadeSections.get(1).toString());
- }
-
- public void test_functionExpression_asStatement() {
- DartUnit unit = parseUnit("function.dart", Joiner.on("\n").join(
- "main() {",
- " () {};",
- "}"
- ));
- assertNotNull(unit);
- assertEquals(1, unit.getTopLevelNodes().size());
- DartMethodDefinition function = (DartMethodDefinition) unit.getTopLevelNodes().get(0);
- assertNotNull(function);
- DartStatement statement = function.getFunction().getBody().getStatements().get(0);
- assertTrue(statement instanceof DartExprStmt);
- DartExpression expression = ((DartExprStmt) statement).getExpression();
- assertTrue(expression instanceof DartFunctionExpression);
- }
-
- public void test_functionExpression_inIsExpression() {
- DartUnit unit = parseUnit("function.dart", Joiner.on("\n").join(
- "main() {",
- " (p) {} is String;",
- "}"
- ));
- assertNotNull(unit);
- assertEquals(1, unit.getTopLevelNodes().size());
- DartMethodDefinition function = (DartMethodDefinition) unit.getTopLevelNodes().get(0);
- assertNotNull(function);
- DartStatement statement = function.getFunction().getBody().getStatements().get(0);
- assertTrue(statement instanceof DartExprStmt);
- DartExpression expression = ((DartExprStmt) statement).getExpression();
- assertTrue(expression instanceof DartBinaryExpression);
- DartExpression lhs = ((DartBinaryExpression) expression).getArg1();
- assertTrue(lhs instanceof DartFunctionExpression);
- }
-
- public void test_const() {
- DartUnit unit = parseUnit(getName() + ".dart", makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "const T1 = 1;",
- "final T2 = 1;",
- "class A {",
- " const F1 = 2;",
- " static final F2 = 2;",
- "}"));
- // T1
- {
- DartFieldDefinition fieldDefinition = (DartFieldDefinition) unit.getTopLevelNodes().get(0);
- DartField field = fieldDefinition.getFields().get(0);
- assertEquals("T1", field.getName().getName());
- assertEquals(true, field.getModifiers().isConstant());
- assertEquals(false, field.getModifiers().isStatic());
- assertEquals(true, field.getModifiers().isFinal());
- }
- // T2
- {
- DartFieldDefinition fieldDefinition = (DartFieldDefinition) unit.getTopLevelNodes().get(1);
- DartField field = fieldDefinition.getFields().get(0);
- assertEquals("T2", field.getName().getName());
- assertEquals(false, field.getModifiers().isConstant());
- assertEquals(false, field.getModifiers().isStatic());
- assertEquals(true, field.getModifiers().isFinal());
- }
- // A
- {
- DartClass classA = (DartClass) unit.getTopLevelNodes().get(2);
- // F1
- {
- DartFieldDefinition fieldDefinition = (DartFieldDefinition) classA.getMembers().get(0);
- DartField field = fieldDefinition.getFields().get(0);
- assertEquals("F1", field.getName().getName());
- assertEquals(true, field.getModifiers().isConstant());
- assertEquals(false, field.getModifiers().isStatic());
- assertEquals(true, field.getModifiers().isFinal());
- }
- // F2
- {
- DartFieldDefinition fieldDefinition = (DartFieldDefinition) classA.getMembers().get(1);
- DartField field = fieldDefinition.getFields().get(0);
- assertEquals("F2", field.getName().getName());
- assertEquals(false, field.getModifiers().isConstant());
- assertEquals(true, field.getModifiers().isStatic());
- assertEquals(true, field.getModifiers().isFinal());
- }
- }
- }
-
- public void test_constructor_named() {
- DartUnit unit = parseUnit("test.dart", makeCode(
- "class A {",
- " A.named() {}",
- "}",
- "",
- "class B {",
- " factory B() = A.named;",
- "}"));
- assertNotNull(unit);
- DartNode classB = unit.getTopLevelNodes().get(1);
- assertTrue(classB instanceof DartClass);
- DartNode member = ((DartClass) classB).getMembers().get(0);
- assertTrue(member instanceof DartMethodDefinition);
- DartTypeNode typeName = ((DartMethodDefinition) member).getRedirectedTypeName();
- assertTrue(typeName.getIdentifier() instanceof DartIdentifier);
- DartExpression constructorName = ((DartMethodDefinition) member).getRedirectedConstructorName();
- assertTrue(constructorName instanceof DartIdentifier);
- }
-
- /**
- * There was bug when "identA.identB" always considered as constructor declaration. But it can be
- * constructor only if "identA" is name of enclosing class.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=513
- */
- public void testQualifiedReturnType() {
- DartUnit unit = parseUnit("QualifiedReturnTypeB.dart");
- assertEquals(
- Joiner.on("\n").join(
- "// unit QualifiedReturnTypeB.dart",
- "library test;",
- "import \"QualifiedReturnTypeA.dart\" as pref;",
- "class A {",
- "",
- " pref.A foo() {",
- " return new pref.A();",
- " }",
- "}"),
- unit.toSource().trim());
- DartClass classB = (DartClass) unit.getTopLevelNodes().get(0);
- DartMethodDefinition fooMethod = (DartMethodDefinition) classB.getMembers().get(0);
- DartTypeNode fooReturnType = fooMethod.getFunction().getReturnTypeNode();
- assertEquals(true, fooReturnType.getIdentifier() instanceof DartPropertyAccess);
- }
-
- @Override
- public void testStrings() {
- DartUnit unit = parseUnit("Strings.dart");
-
- // Inspect the first method and check that the strings were
- // parsed correctly
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartClass clazz = (DartClass) nodes.get(0);
- List<DartNode> members = clazz.getMembers();
- assertEquals(1, members.size());
- DartMethodDefinition m = (DartMethodDefinition) members.get(0);
- assertEquals("method", m.getName().toString());
- List<DartStatement> body = m.getFunction().getBody().getStatements();
-
- String[] expectedStrings = new String[] {
- "a simple constant",
- "a simple constant",
- "an escaped quote \".",
- "an escaped quote \'.",
- "a new \n line",
- "a new \n line",
- " multiline 1\n multiline 2\n ",
- " multiline 1\n multiline 2\n ",
- "multiline 1\n multiline 2\n ",
- "multiline 1\n multiline 2\n "};
- assertEquals(expectedStrings.length + 1, body.size());
- assertTrue(body.get(0) instanceof DartVariableStatement);
- for (int i = 0; i < expectedStrings.length; i++) {
- DartStatement s = body.get(i + 1);
- assertTrue(s instanceof DartExprStmt);
- DartExprStmt es = (DartExprStmt) s;
- DartExpression e = es.getExpression();
- assertTrue(e instanceof DartBinaryExpression);
- e = ((DartBinaryExpression) e).getArg2();
- assertTrue(e instanceof DartStringLiteral);
- assertEquals(expectedStrings[i], ((DartStringLiteral) e).getValue());
- }
- }
-
- @Override
- public void testStringsErrors() {
- parseUnitErrors("StringsErrorsNegativeTest.dart",
- "Unexpected token 'ILLEGAL'", 7, 13,
- "Unexpected token 'ILLEGAL'", 9, 9,
- "Unexpected token 'ILLEGAL'", 11, 9);
- }
-
- public void testNullAssign() {
- String sourceCode = "= 123;";
- try {
- DartSourceTest dartSrc = new DartSourceTest(getName(), sourceCode, null);
- DartParser parser = makeParser(dartSrc, sourceCode, new DartCompilerListener.Empty());
- parser.parseExpression();
- }
- catch(Exception e) {
- fail("unexpected exception " + e);
- }
- }
-
- public void testFactoryInitializerError() {
- parseUnitErrors("FactoryInitializersNegativeTest.dart",
- "Unexpected token ':' (expected '{')", 10, 22,
- "Unexpected token '{' (expected ';')", 10, 35);
- }
-
- public void testTryCatch () {
- DartUnit unit = parseUnit("TryCatch.dart");
-
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(7, nodes.size());
-
- DartTryStatement tryCatch;
- DartMethodDefinition a = (DartMethodDefinition) nodes.get(2);
- assertEquals("a", ((DartIdentifier)a.getName()).getName());
- tryCatch = (DartTryStatement) a.getFunction().getBody().getStatements().get(0);
- assertEquals(1, tryCatch.getCatchBlocks().size());
- assertNotNull(tryCatch.getFinallyBlock());
-
- DartMethodDefinition b = (DartMethodDefinition) nodes.get(3);
- assertEquals("b", ((DartIdentifier)b.getName()).getName());
- tryCatch = (DartTryStatement) b.getFunction().getBody().getStatements().get(0);
- assertEquals(1, tryCatch.getCatchBlocks().size());
- assertNull(tryCatch.getFinallyBlock());
-
- DartMethodDefinition c = (DartMethodDefinition) nodes.get(4);
- assertEquals("c", ((DartIdentifier)c.getName()).getName());
- tryCatch = (DartTryStatement) c.getFunction().getBody().getStatements().get(0);
- assertEquals(0, tryCatch.getCatchBlocks().size());
- assertNotNull(tryCatch.getFinallyBlock());
-
- DartMethodDefinition d = (DartMethodDefinition) nodes.get(5);
- assertEquals("d", ((DartIdentifier)d.getName()).getName());
- tryCatch = (DartTryStatement) d.getFunction().getBody().getStatements().get(0);
- assertEquals(2, tryCatch.getCatchBlocks().size());
- assertNull(tryCatch.getFinallyBlock());
-
- DartMethodDefinition e = (DartMethodDefinition) nodes.get(6);
- assertEquals("e", ((DartIdentifier)e.getName()).getName());
- tryCatch = (DartTryStatement) e.getFunction().getBody().getStatements().get(0);
- assertEquals(2, tryCatch.getCatchBlocks().size());
- assertNotNull(tryCatch.getFinallyBlock());
-
- parseUnitErrors("TryCatchNegative.dart",
- ParserErrorCode.CATCH_OR_FINALLY_EXPECTED, 8, 3);
- }
-
-// public void test_tryOn_catch() {
-// parseUnit("tryOn.dart", "f() {try {} catch (e) {}}");
-// }
-
-// public void test_tryOn_catchStack() {
-// parseUnit("tryOn.dart", "f() {try {} catch (e, s) {}}");
-// }
-
-// public void test_tryOn_on1Catch1() {
-// parseUnit("tryOn.dart", Joiner.on("\n").join(
-// "class Object {}",
-// "class E {}",
-// "f() {try {} on E catch (e) {}}"));
-// }
-
-// public void test_tryOn_on2Catch2() {
-// parseUnit("tryOn.dart", Joiner.on("\n").join(
-// "class Object {}",
-// "class E1 {}",
-// "class E2 {}",
-// "f() {try {} on E1 catch (e1) {} on E2 catch (e2) {}}"));
-// }
-
-// public void test_tryOn_on2Catch3() {
-// parseUnit("tryOn.dart", Joiner.on("\n").join(
-// "class Object {}",
-// "class E1 {}",
-// "class E2 {}",
-// "f() {try {} on E1 catch (e1) {} on E2 catch (e2) {} catch (e3) {}}"));
-// }
-
-// public void test_tryOn_on2Catch2Finally() {
-// parseUnit("tryOn.dart", Joiner.on("\n").join(
-// "class Object {}",
-// "class E1 {}",
-// "class E2 {}",
-// "f() {try {} on E1 catch (e1) {} on E2 catch (e2) {} finally {}}"));
-// }
-
- public void testArrayLiteral() {
- DartUnit unit = parseUnit("phony_array_literal.dart", "var x = <int>[1,2,3];");
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartFieldDefinition f = (DartFieldDefinition)nodes.get(0);
- DartField fieldX = f.getFields().get(0);
- DartArrayLiteral array = (DartArrayLiteral) fieldX.getValue();
- assertEquals(3, array.getExpressions().size());
- assertEquals(1, ((DartIntegerLiteral)array.getExpressions().get(0)).getValue().intValue());
- assertEquals(2, ((DartIntegerLiteral)array.getExpressions().get(1)).getValue().intValue());
- assertEquals(3, ((DartIntegerLiteral)array.getExpressions().get(2)).getValue().intValue());
- }
-
- public void testAs() {
- DartUnit unit = parseUnit("phony_cast.dart", "var x = 3 as int;");
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartFieldDefinition f = (DartFieldDefinition)nodes.get(0);
- DartField fieldX = f.getFields().get(0);
- DartBinaryExpression cast = (DartBinaryExpression) fieldX.getValue();
- assertTrue(cast.getArg1() instanceof DartIntegerLiteral);
- assertEquals(Token.AS, cast.getOperator());
- assertTrue(cast.getArg2() instanceof DartTypeExpression);
- }
-
- public void testMapLiteral() {
- DartUnit unit = parseUnit("phony_map_literal.dart", "var x = <int>{'a':1,'b':2,'c':3};");
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartFieldDefinition f = (DartFieldDefinition)nodes.get(0);
- DartField fieldX = f.getFields().get(0);
- DartMapLiteral map = (DartMapLiteral) fieldX.getValue();
- assertEquals(3, map.getEntries().size());
- assertEquals(1, ((DartIntegerLiteral) (map.getEntries().get(0)).getValue()).getValue()
- .intValue());
- }
- public void testNestedParameterizedTypes1() {
- // token >>> is handled specially
- DartUnit unit = parseUnit ("phony_param_type1.dart",
- Joiner.on("\n").join(
- "class A<K> {",
- " A<A<A<K>>> member;",
- "}"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- }
-
- public void testNestedParameterizedTypes2() {
- // token >> is handled specially
- DartUnit unit = parseUnit ("phony_param_type1.dart",
- Joiner.on("\n").join(
- "class A<K> {",
- " A<A<K>> member;",
- "}"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- }
-
- public void testMethodDefinition1() {
- DartUnit unit = parseUnit ("phony_method_definition1.dart",
- Joiner.on("\n").join(
- "class A {",
- " pref.A foo() {",
- " return new pref.A();",
- " }",
- "}"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- }
-
- public void testMultipleLabels() {
- parseUnit ("multiple_labels.dart",
- Joiner.on("\n").join(
- "class A {",
- " void foo() {",
- " a: b: foo();",
- " }",
- "}"));
- }
-
- public void testAdjacentStrings1() {
- DartUnit unit = parseUnit ("phony_adjacent_strings_1.dart",
- Joiner.on("\n").join(
- "var a = \"\" \"\";",
- "var b = \"1\" \"2\" \"3\";"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(2, nodes.size());
- DartStringLiteral varA = (DartStringLiteral)((DartFieldDefinition)nodes.get(0))
- .getFields().get(0).getValue();
- assertEquals("", varA.getValue());
- DartStringLiteral varB = (DartStringLiteral)((DartFieldDefinition)nodes.get(1))
- .getFields().get(0).getValue();
- assertEquals("123", varB.getValue());
-
- }
-
- public void testAdjacentStrings2() {
- DartUnit unit = parseUnit ("phony_adjacent_strings_2.dart",
- Joiner.on("\n").join(
- "var c = \"hello\" \"${world}\";",
- "var d = \"${hello}\" \"world\";",
- "var e = \"${hello}\" \"${world}\";"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(3, nodes.size());
- DartStringInterpolation varC = (DartStringInterpolation)((DartFieldDefinition)nodes.get(0))
- .getFields().get(0).getValue();
-
- List<DartStringLiteral> strings = varC.getStrings();
- assertEquals(3, strings.size());
- assertEquals("hello", strings.get(0).getValue());
- assertEquals("", strings.get(1).getValue());
- assertEquals("", strings.get(2).getValue());
- List<DartExpression> expressions = varC.getExpressions();
- assertEquals(2, expressions.size());
- assertEquals("", ((DartStringLiteral)expressions.get(0)).getValue());
- DartIdentifier expr = (DartIdentifier)expressions.get(1);
- assertEquals("world", expr.getName());
-
- DartStringInterpolation varD = (DartStringInterpolation)((DartFieldDefinition)nodes.get(1))
- .getFields().get(0).getValue();
- strings = varD.getStrings();
- assertEquals(3, strings.size());
- assertEquals("", strings.get(0).getValue());
- assertEquals("", strings.get(1).getValue());
- assertEquals("world", strings.get(2).getValue());
- expressions = varD.getExpressions();
- assertEquals(2, expressions.size());
- expr = (DartIdentifier)expressions.get(0);
- assertEquals("hello", expr.getName());
- assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
-
- DartStringInterpolation varE = (DartStringInterpolation)((DartFieldDefinition)nodes.get(2))
- .getFields().get(0).getValue();
- strings = varE.getStrings();
- assertEquals(4, strings.size());
- assertEquals("", strings.get(0).getValue());
- assertEquals("", strings.get(1).getValue());
- assertEquals("", strings.get(2).getValue());
- assertEquals("", strings.get(3).getValue());
- expressions = varE.getExpressions();
- assertEquals(3, expressions.size());
- expr = (DartIdentifier)expressions.get(0);
- assertEquals("hello", expr.getName());
- assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
- expr = (DartIdentifier)expressions.get(2);
- assertEquals("world", expr.getName());
- }
-
- public void testAdjacentStrings3() {
- DartUnit unit = parseUnit ("phony_adjacent_strings_2.dart",
- Joiner.on("\n").join(
- "var f = \"hello\" \"${world}\" \"!\";",
- "var g = \"${hello}\" \"world\" \"!\";"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(2, nodes.size());
- DartStringInterpolation varF = (DartStringInterpolation)((DartFieldDefinition)nodes.get(0))
- .getFields().get(0).getValue();
-
- List<DartStringLiteral> strings = varF.getStrings();
- assertEquals(4, strings.size());
- assertEquals("hello", strings.get(0).getValue());
- assertEquals("", strings.get(1).getValue());
- assertEquals("", strings.get(2).getValue());
- assertEquals("!", strings.get(3).getValue());
- List<DartExpression> expressions = varF.getExpressions();
- assertEquals(3, expressions.size());
- assertEquals("", ((DartStringLiteral)expressions.get(0)).getValue());
- DartIdentifier expr = (DartIdentifier)expressions.get(1);
- assertEquals("world", expr.getName());
- assertEquals("", ((DartStringLiteral)expressions.get(2)).getValue());
-
- DartStringInterpolation varG = (DartStringInterpolation)((DartFieldDefinition)nodes.get(1))
- .getFields().get(0).getValue();
- strings = varG.getStrings();
- assertEquals(4, strings.size());
- assertEquals("", strings.get(0).getValue());
- assertEquals("", strings.get(1).getValue());
- assertEquals("world", strings.get(2).getValue());
- assertEquals("!", strings.get(3).getValue());
- expressions = varG.getExpressions();
- assertEquals(3, expressions.size());
- expr = (DartIdentifier)expressions.get(0);
- assertEquals("hello", expr.getName());
- assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
- assertEquals("", ((DartStringLiteral)expressions.get(2)).getValue());
- }
-
- public void testPseudokeywordMethodsAndFields() {
- DartUnit unit = parseUnit("phony_pseudokeyword_methods.dart",
- Joiner.on("\n").join(
- "class A { ",
- " int get;",
- " var set;",
- " final operator;",
- "}",
- "class B {",
- " var get = 1;",
- " int set = 1;",
- " final int operator = 1;",
- "}",
- "class C {",
- " var get = 1;",
- " int set = 1;",
- " final operator = 1;",
- "}",
- "class D {",
- " int get = 1;",
- " final int set = 1;",
- " var operator = 1;",
- "}",
- "class E {",
- " int get() { }",
- " void set() { }",
- " operator() { }",
- "}",
- "class F {",
- " operator - () { }",
- " operator + (arg) { }",
- " operator [] (arg) { }",
- " operator []= (arg, arg){ }",
- "}"));
-
- DartClass A = (DartClass)unit.getTopLevelNodes().get(0);
- DartFieldDefinition A_get = (DartFieldDefinition)A.getMembers().get(0);
- assertEquals("get", A_get.getFields().get(0).getName().getName());
- DartFieldDefinition A_set = (DartFieldDefinition)A.getMembers().get(1);
- assertEquals("set", A_set.getFields().get(0).getName().getName());
- DartFieldDefinition A_operator = (DartFieldDefinition)A.getMembers().get(2);
- assertEquals("operator", A_operator.getFields().get(0).getName().getName());
- DartClass B = (DartClass)unit.getTopLevelNodes().get(1);
- DartFieldDefinition B_get = (DartFieldDefinition)B.getMembers().get(0);
- assertEquals("get", B_get.getFields().get(0).getName().getName());
- DartFieldDefinition B_set = (DartFieldDefinition)B.getMembers().get(1);
- assertEquals("set", B_set.getFields().get(0).getName().getName());
- DartFieldDefinition B_operator = (DartFieldDefinition)B.getMembers().get(2);
- assertEquals("operator", B_operator.getFields().get(0).getName().getName());
- DartClass C = (DartClass)unit.getTopLevelNodes().get(2);
- DartFieldDefinition C_get = (DartFieldDefinition)C.getMembers().get(0);
- assertEquals("get", C_get.getFields().get(0).getName().getName());
- DartFieldDefinition C_set = (DartFieldDefinition)C.getMembers().get(1);
- assertEquals("set", C_set.getFields().get(0).getName().getName());
- DartFieldDefinition C_operator = (DartFieldDefinition)C.getMembers().get(2);
- assertEquals("operator", C_operator.getFields().get(0).getName().getName());
- DartClass D = (DartClass)unit.getTopLevelNodes().get(3);
- DartFieldDefinition D_get = (DartFieldDefinition)D.getMembers().get(0);
- assertEquals("get", D_get.getFields().get(0).getName().getName());
- DartFieldDefinition D_set = (DartFieldDefinition)D.getMembers().get(1);
- assertEquals("set", D_set.getFields().get(0).getName().getName());
- DartFieldDefinition D_operator = (DartFieldDefinition)D.getMembers().get(2);
- assertEquals("operator", D_operator.getFields().get(0).getName().getName());
- DartClass E = (DartClass)unit.getTopLevelNodes().get(4);
- DartMethodDefinition E_get = (DartMethodDefinition)E.getMembers().get(0);
- assertEquals("get", ((DartIdentifier)E_get.getName()).getName());
- DartMethodDefinition E_set = (DartMethodDefinition)E.getMembers().get(1);
- assertEquals("set", ((DartIdentifier)E_set.getName()).getName());
- DartMethodDefinition E_operator = (DartMethodDefinition)E.getMembers().get(2);
- assertEquals("operator", ((DartIdentifier)E_operator.getName()).getName());
- DartClass F = (DartClass)unit.getTopLevelNodes().get(5);
- DartMethodDefinition F_negate = (DartMethodDefinition)F.getMembers().get(0);
- assertEquals("-", ((DartIdentifier)F_negate.getName()).getName());
- DartMethodDefinition F_plus = (DartMethodDefinition)F.getMembers().get(1);
- assertEquals("+", ((DartIdentifier)F_plus.getName()).getName());
- DartMethodDefinition F_access = (DartMethodDefinition)F.getMembers().get(2);
- assertEquals("[]", ((DartIdentifier)F_access.getName()).getName());
- DartMethodDefinition F_access_assign = (DartMethodDefinition)F.getMembers().get(3);
- assertEquals("[]=", ((DartIdentifier)F_access_assign.getName()).getName());
- }
-
-// public void test_string_raw_deprecated() {
-// parseUnit("test.dart", "var s = @'abc${d}efg';", ParserErrorCode.DEPRECATED_RAW_STRING, 1, 9);
-// }
-
- public void test_string_raw() {
- String expectedValue = "abc${d}efg";
- DartUnit unit = parseUnit("test.dart", "var s = r'" + expectedValue + "';");
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartFieldDefinition definition = (DartFieldDefinition) nodes.get(0);
- DartField field = definition.getFields().get(0);
- DartExpression expression = field.getValue();
- assertTrue(expression instanceof DartStringLiteral);
- assertEquals(expectedValue, ((DartStringLiteral) expression).getValue());
- }
-
- public void test_super_operator() {
- DartUnit unit = parseUnit("phony_super.dart", Joiner.on("\n").join(
- "class A {",
- " void m() {",
- " --super;",
- " }",
- "}"));
- List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
- DartClass A = (DartClass) nodes.get(0);
- DartMethodDefinition m = (DartMethodDefinition) A.getMembers().get(0);
- DartExprStmt statement = (DartExprStmt) m.getFunction().getBody().getStatements().get(0);
- DartUnaryExpression value = (DartUnaryExpression) statement.getExpression();
- assertEquals(Token.SUB, value.getOperator());
- DartUnaryExpression inner = (DartUnaryExpression) value.getArg();
- assertEquals(Token.SUB, inner.getOperator());
- }
-
- /**
- * Typedef and interface are top level keywords that are also valid as identifiers.
- *
- * This test helps insure that the error recovery logic in the parser that detects
- * top level keywords out of place doesn't break this functionality.
- */
- public void testTopLevelKeywordsAsIdent() {
- parseUnit("phony_pseudokeyword_methods.dart",
- Joiner.on("\n").join(
- "var interface;",
- "bool interface;",
- "final interface;",
- "interface() { }",
- "String interface() { }",
- "interface();",
- "var typedef;",
- "bool typedef;",
- "final typedef;",
- "typedef() { }",
- "String typedef() { }",
- "typedef();",
- "class A { ",
- " var interface;",
- " bool interface;",
- " final interface;",
- " interface() { }",
- " String interface() { }",
- " interface();",
- " var typedef;",
- " bool typedef;",
- " final typedef;",
- " typedef() { }",
- " String typedef() { }",
- " typedef();",
- "}",
- "method() {",
- " var interface;",
- " bool interface;",
- " final interface;",
- " interface() { }",
- " String interface() { }",
- " interface();",
- " var typedef;",
- " bool typedef;",
- " final typedef;",
- " typedef() { }",
- " String typedef() { }",
- " typedef();",
- "}"));
- }
-
- /**
- * We should be able to parse "static(abstract) => 42" top-level function.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=1197
- */
- public void test_staticAsFunctionName() {
- DartUnit unit = parseUnit(
- getName(),
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "static(abstract) => 42;",
- ""));
- assertEquals(1, unit.getTopLevelNodes().size());
- DartMethodDefinition method = (DartMethodDefinition) unit.getTopLevelNodes().get(0);
- assertEquals("static", method.getName().toSource());
- assertEquals("abstract", method.getFunction().getParameters().get(0).getName().toSource());
- }
-
- /**
- * The token 'super' is valid by itself (not as a qualifier or assignment selector) in only some
- * cases.
- */
- public void testLoneSuperExpression1() {
- parseUnit("phony_lone_super_expression1.dart",
- Joiner.on("\n").join(
- "class A {",
- " method() {",
- " super;",
- " super ? true : false;",
- " true ? true : super;",
- " true ? super : false;",
- " if (super && true) { }",
- " if (super || false) { }",
- " }",
- "}"),
- ParserErrorCode.SUPER_IS_NOT_VALID_ALONE_OR_AS_A_BOOLEAN_OPERAND, 3, 5,
- ParserErrorCode.SUPER_IS_NOT_VALID_ALONE_OR_AS_A_BOOLEAN_OPERAND, 4, 5,
- ParserErrorCode.SUPER_IS_NOT_VALID_ALONE_OR_AS_A_BOOLEAN_OPERAND, 5, 19,
- ParserErrorCode.SUPER_IS_NOT_VALID_ALONE_OR_AS_A_BOOLEAN_OPERAND, 6, 12,
- ParserErrorCode.SUPER_IS_NOT_VALID_AS_A_BOOLEAN_OPERAND, 7, 9,
- ParserErrorCode.SUPER_IS_NOT_VALID_AS_A_BOOLEAN_OPERAND, 8, 9);
- }
-
- public void testLoneSuperExpression2() throws Exception {
- parseUnit("phony_lone_super_expression1.dart",
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class Object {}",
- "class A {",
- " method() {",
- " if (1 + super) { }", // error
- " if (super + 1) { }", // ok
- " if (1 == super) { }", // error
- " if (super == 1) { }", // ok
- " if (1 | super) { }", // error
- " if (super | 1) { }", // ok
- " if (1 < super) { }", // error
- " if (super < 1) { }", // ok
- " if (1 << super) { }", // error
- " if (super << 1) { }", // ok
- " if (1 * super) { }", // error
- " if (super * 1) { }", // ok
- " var f = -super;", // ok
- " }",
- "}"),
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 5, 13,
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 7, 14,
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 9, 13,
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 11, 13,
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 13, 14,
- ParserErrorCode.SUPER_CANNOT_BE_USED_AS_THE_SECOND_OPERAND, 15, 13);
- }
-
- public void testBreakOutsideLoop() throws Exception {
- parseUnit("phony_lone_super_expression1.dart",
- Joiner.on("\n").join(
- "class A {",
- " method() {",
- " while (true) { break; }", // ok
- " break;", // bad
- " L1: break L1;", // ok
- " while (true) { continue; }", // ok
- " continue;", // bad
- " L2: continue L2;", // bad
- " while (true) { int f() { break; }; }", // bad
- " }",
- "}"),
- ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, 4, 10,
- ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, 7, 13,
- ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, 8, 18,
- ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, 9, 35);
- }
-
- public void testContinueNoLabelInsideCase() throws Exception {
- parseUnit("phony_lone_super_expression1.dart",
- Joiner.on("\n").join(
- "class A {",
- " method() {",
- " switch(1) {",
- " case 1: continue;", // error
- " }",
- " while (1) {",
- " switch(1) {",
- " case 1: continue;", // ok, refers to the while loop.
- " }",
- " }",
- " L: switch(1) {",
- " case 1: var result = () { continue L; };", // bad
- " }",
- " }",
- "}"),
- ParserErrorCode.CONTINUE_IN_CASE_MUST_HAVE_LABEL, 4, 23,
- ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, 12, 41);
- }
-
- public void testRedundantAbruptlyTermainatedCaseStatement() throws Exception {
- parseUnit("phony_reduntant_abruptly_terminated_case_statement.dart",
- Joiner.on("\n").join(
- "func () {",
- " switch (0) {",
- " case 0: ",
- " return 0; ",
- " break;", // warn dead code
- " case 1: ",
- " return 1; ",
- " var foo = 1;", // warn dead code
- " case 2:",
- " return 2;",
- " var bar = 2;", // warn dead code
- " break;", // no warning here
- " default:",
- " return -1;",
- " var baz = -1;", // warn dead code
- " break;", // no warning here
- " }",
- "}"),
- ParserErrorCode.UNREACHABLE_CODE_IN_CASE, 5, 6,
- ParserErrorCode.UNREACHABLE_CODE_IN_CASE, 8, 6,
- ParserErrorCode.UNREACHABLE_CODE_IN_CASE, 11, 6,
- ParserErrorCode.UNREACHABLE_CODE_IN_CASE, 15, 6);
- }
-
- public void testCornerCaseLabelInSwitch() throws Exception {
- // The parser used to just accept this statement.
- parseUnit("phony_reduntant_abruptly_terminated_case_statement.dart",
- Joiner.on("\n").join(
- "func () {",
- " switch (0) {",
- " label1: ", // no case, default or statement follows.
- " }",
- "}"),
- ParserErrorCode.LABEL_NOT_FOLLOWED_BY_CASE_OR_DEFAULT, 3, 9);
- }
-
- public void testBogusEscapedNewline() throws Exception {
- parseUnit("phony_bogus_escaped_newline.dart",
- Joiner.on("\n").join(
- "class A {",
- " var foo = \"not really multiline\\\n",
- "\";",
- "}"),
- ParserErrorCode.ESCAPED_NEWLINE, 2, 35,
- ParserErrorCode.UNEXPECTED_TOKEN, 2, 13,
- ParserErrorCode.EXPECTED_TOKEN, 4, 1);
- }
-
- public void testLabelledCaseStatements() throws Exception {
- parseUnit("phony_labelled_case_statements.dart",
- Joiner.on("\n").join(
- "method() {",
- " switch(1) {",
- " A: case 0:",
- " B: C: case 1:",
- " break;",
- " }",
- "}"));
- }
-
- public void testRedirectingConstructorBody() throws Exception {
- parseUnit("phony_test_redirecting_constructor_body.dart",
- Joiner.on("\n").join(
- "class A {",
- " A.c() {}", // OK
- " A.d() : this.c();", // OK
- " A(): this.b() {}", // body not allowed
- "}"),
- ParserErrorCode.REDIRECTING_CONSTRUCTOR_CANNOT_HAVE_A_BODY, 4, 18);
- }
-
- public void test_missingFactoryBody() throws Exception {
- parseUnit("phony_test_missing_factory_body.dart",
- Joiner.on("\n").join(
- "class A {",
- " factory A.c();", // error - no body
- " A() {}",
- "}"),
- ParserErrorCode.EXPECTED_FUNCTION_STATEMENT_BODY, 2, 16);
- }
-
- public void test_factoryAbstractStatic() throws Exception {
- parseUnit("phony_test_factory_not_abstract.dart",
- Joiner.on("\n").join(
- "class A {",
- " A() {}",
- " factory A.named1() { return new A();}",
- " static factory A.named2() { return new A();}",
- "}"),
- ParserErrorCode.FACTORY_CANNOT_BE_STATIC, 4, 10);
- }
-
- public void test_factoryInInterface() throws Exception {
- parseUnit("phony_test_factory_in_interface.dart",
- Joiner.on("\n").join(
- "interface A {",
- " factory A();",
- "}"),
- ParserErrorCode.DEPRECATED_INTERFACE, 1, 1,
- ParserErrorCode.FACTORY_MEMBER_IN_INTERFACE, 2, 3,
- ParserErrorCode.EXPECTED_FUNCTION_STATEMENT_BODY, 2, 14);
- }
-
- public void test_localVariable_const() {
- DartUnit unit = parseUnit("constVar.dart", makeCode(
- "main() {",
- " const v = 1;",
- "}"));
- assertNotNull(unit);
- DartNode firstNode = unit.getTopLevelNodes().get(0);
- assertTrue(firstNode instanceof DartMethodDefinition);
- DartStatement statement = ((DartMethodDefinition) firstNode).getFunction().getBody().getStatements().get(0);
- assertTrue(((DartVariableStatement) statement).getModifiers().isConstant());
- }
-
- public void test_localVariable_final_prefixedType() {
- DartUnit unit = parseUnit("finalVar.dart", makeCode(
- "main() {",
- " final p.T v = 1;",
- "}"));
- assertNotNull(unit);
- DartNode firstNode = unit.getTopLevelNodes().get(0);
- assertTrue(firstNode instanceof DartMethodDefinition);
- DartStatement statement = ((DartMethodDefinition) firstNode).getFunction().getBody().getStatements().get(0);
- DartVariableStatement variableStatement = (DartVariableStatement) statement;
- assertTrue(variableStatement.getModifiers().isFinal());
- assertEquals("v", variableStatement.getVariables().get(0).getVariableName());
- }
-
- public void test_metadata_identifier() {
- String code = makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "const int annotation = 0;",
- "class A {",
- " m0() {}",
- " @annotation",
- " m1() {}",
- "}",
- "");
- DartUnit unit = parseUnit(getName() + ".dart", code);
- DartClass classA = (DartClass) unit.getTopLevelNodes().get(1);
-
- DartMethodDefinition method0 = (DartMethodDefinition) classA.getMembers().get(0);
- assertEquals("m0", method0.getName().toSource());
- assertEquals(0, method0.getMetadata().size());
-
- DartMethodDefinition method1 = (DartMethodDefinition) classA.getMembers().get(1);
- assertEquals("m1", method1.getName().toSource());
- assertEquals(1, method1.getMetadata().size());
- DartAnnotation metadata = method1.getMetadata().get(0);
- assertNotNull(metadata);
- DartExpression name = metadata.getName();
- assertTrue(name instanceof DartIdentifier);
- assertEquals("annotation", name.toSource());
- assertEquals(0, metadata.getArguments().size());
- }
-
- public void test_metadata_localVariable() {
- String code = makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "const annotation = 0;",
- "class A {",
- " test() {",
- " @annotation",
- " var v = 0;",
- " }",
- "}",
- "");
- DartUnit unit = parseUnit(getName() + ".dart", code);
- DartClass classA = (DartClass) unit.getTopLevelNodes().get(1);
-
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(0);
- assertEquals("test", method.getName().toSource());
- assertEquals(0, method.getMetadata().size());
-
- DartVariableStatement statement = (DartVariableStatement) method.getFunction().getBody().getStatements().get(0);
- DartVariable variable = statement.getVariables().get(0);
- assertEquals("v", variable.getName().toSource());
- assertEquals(1, variable.getMetadata().size());
- DartAnnotation metadata = variable.getMetadata().get(0);
- assertNotNull(metadata);
- DartExpression name = metadata.getName();
- assertTrue(name instanceof DartIdentifier);
- assertEquals("annotation", name.toSource());
- assertEquals(0, metadata.getArguments().size());
- }
-
- public void test_metadata_constructor() {
- String code = makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " const A();",
- "}",
- "",
- "class B {",
- " m0() {}",
- " @A()",
- " m1() {}",
- "}",
- "");
- DartUnit unit = parseUnit(getName() + ".dart", code);
- DartClass classB = (DartClass) unit.getTopLevelNodes().get(1);
-
- DartMethodDefinition method0 = (DartMethodDefinition) classB.getMembers().get(0);
- assertEquals("m0", method0.getName().toSource());
- assertEquals(0, method0.getMetadata().size());
-
- DartMethodDefinition method1 = (DartMethodDefinition) classB.getMembers().get(1);
- assertEquals("m1", method1.getName().toSource());
- assertEquals(1, method1.getMetadata().size());
- }
-
- public void test_metadata_deprecated() {
- String code = makeCode(
- "class A {",
- " m0() {}",
- " @deprecated",
- " m1() {}",
- "}",
- "");
- DartUnit unit = parseUnit(getName() + ".dart", code);
- // A
- {
- DartClass classA = (DartClass) unit.getTopLevelNodes().get(0);
- // m0()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(0);
- assertEquals("m0", method.getName().toSource());
- assertEquals(false, method.getObsoleteMetadata().isDeprecated());
- }
- // m1()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(1);
- assertEquals("m1", method.getName().toSource());
- assertEquals(true, method.getObsoleteMetadata().isDeprecated());
- }
- }
- }
-
- public void test_metadata_override() {
- String code = makeCode(
- "class A {",
- " m0() {}",
- " @override",
- " m1() {}",
- " /** Leading DartDoc comment */",
- " @override",
- " m2() {}",
- " @override",
- " /** Trailing DartDoc comment */",
- " m3() {}",
- "}",
- "");
- DartUnit unit = parseUnit(getName() + ".dart", code);
- // A
- {
- DartClass classA = (DartClass) unit.getTopLevelNodes().get(0);
- // m0()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(0);
- assertEquals("m0", method.getName().toSource());
- assertEquals(false, method.getObsoleteMetadata().isOverride());
- assertNull(method.getDartDoc());
- }
- // m1()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(1);
- assertEquals("m1", method.getName().toSource());
- assertEquals(true, method.getObsoleteMetadata().isOverride());
- assertNull(method.getDartDoc());
- }
- // m2()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(2);
- assertEquals("m2", method.getName().toSource());
- assertEquals(true, method.getObsoleteMetadata().isOverride());
- {
- DartComment dartDoc = method.getDartDoc();
- assertNotNull(dartDoc);
- assertEquals("/** Leading DartDoc comment */", getNodeSource(code, dartDoc));
- }
- }
- // m3()
- {
- DartMethodDefinition method = (DartMethodDefinition) classA.getMembers().get(3);
- assertEquals("m3", method.getName().toSource());
- assertEquals(true, method.getObsoleteMetadata().isOverride());
- {
- DartComment dartDoc = method.getDartDoc();
- assertNotNull(dartDoc);
- assertEquals("/** Trailing DartDoc comment */", getNodeSource(code, dartDoc));
- }
- }
- }
- }
-
- public void test_operators_valid() throws Exception {
- parseUnit("operators.dart",
- Joiner.on("\n").join(
- "class C {",
- " operator <(v) {}",
- " operator >(v) {}",
- " operator <=(v) {}",
- " operator >=(v) {}",
- " operator ==(v) {}",
- " operator -() {}",
- " operator -(v) {}",
- " operator +(v) {}",
- " operator /(v) {}",
- " operator ~/(v) {}",
- " operator *(v) {}",
- " operator %(v) {}",
- " operator |(v) {}",
- " operator ^(v) {}",
- " operator &(v) {}",
- " operator <<(v) {}",
- " operator >>(v) {}",
- " operator [](i) {}",
- " operator []=(i, v) {}",
- " operator ~() {}",
- "}"));
- }
-
- public void test_positionalDefaultValue() throws Exception {
- parseUnit("phony_test_abstract_var.dart",
- Joiner.on("\n").join(
- "method(arg=1) {",
- "}"),
- ParserErrorCode.DEFAULT_POSITIONAL_PARAMETER, 1, 8);
- }
-
- public void test_abstractInInterface() throws Exception {
- parseUnit("phony_test_abstract_in_interface.dart",
- Joiner.on("\n").join(
- "interface A {",
- " var foo;",
- " bar();",
- "}"),
- ParserErrorCode.DEPRECATED_INTERFACE, 1, 1);
- }
-
- public void test_voidParameterField() throws Exception {
- parseUnit("phony_test_abstract_in_interface.dart",
- Joiner.on("\n").join(
- "method(void arg) { }",
- "void field;",
- "class C {",
- " method(void arg) { }",
- " void field;",
- "}"),
- ParserErrorCode.VOID_PARAMETER, 1, 8,
- ParserErrorCode.VOID_FIELD, 2, 1,
- ParserErrorCode.VOID_PARAMETER, 4, 10,
- ParserErrorCode.VOID_FIELD, 5, 3);
- }
-
- public void test_topLevelVariable_const() {
- DartUnit unit = parseUnit("constVar.dart", "const v = 1;");
- assertNotNull(unit);
- DartNode firstNode = unit.getTopLevelNodes().get(0);
- assertTrue(firstNode instanceof DartFieldDefinition);
- DartField field = ((DartFieldDefinition) firstNode).getFields().get(0);
- assertTrue(field.getModifiers().isConstant());
- }
-
- public void test_unexpectedTypeArgument() throws Exception {
- // This is valid code that was previously rejected.
- // Invoking a named constructor in a prefixed library should work.
- parseUnit("phony_test_unexpected_type_argument.dart",
- Joiner.on("\n").join(
- "method() {",
- " new prefix.Type.named<T>();",
- "}"));
- }
-
- public void test_staticOperator() throws Exception {
- parseUnit("phony_static_operator.dart",
- Joiner.on("\n").join(
- "class C {",
- " static operator +(arg) {}",
- "}"),
- ParserErrorCode.OPERATOR_CANNOT_BE_STATIC, 2, 10);
- }
-
- public void test_nonFinalStaticMemberInInterface() throws Exception {
- parseUnit("phony_non_final_static_member_in_interface.dart",
- Joiner.on("\n").join(
- "interface I {",
- " static foo();",
- " static var bar;",
- "}"),
- ParserErrorCode.DEPRECATED_INTERFACE, 1, 1,
- ParserErrorCode.NON_FINAL_STATIC_MEMBER_IN_INTERFACE, 2, 3,
- ParserErrorCode.NON_FINAL_STATIC_MEMBER_IN_INTERFACE, 3, 3);
- }
-
- public void test_invalidOperatorChaining() throws Exception {
- parseUnit("phony_invalid_operator_chaining.dart",
- Joiner.on("\n").join(
- "method() {",
- " if (a < b < c) {}",
- " if (a is b is c) {}",
- "}"),
- ParserErrorCode.INVALID_OPERATOR_CHAINING, 2, 11,
- ParserErrorCode.INVALID_OPERATOR_CHAINING, 3, 12);
- }
-
- public void test_expectedArrayOrMapLiteral() throws Exception {
- parseUnit("phony_expected_array_or_map_literal.dart",
- Joiner.on("\n").join(
- "method() {",
- " var a = <int>;",
- "}"),
- ParserErrorCode.EXPECTED_ARRAY_OR_MAP_LITERAL, 2, 9,
- ParserErrorCode.EXPECTED_TOKEN, 2, 15);
- }
-
- public void test_abstractMethod_withoutModifier() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "class C {",
- " m(a, b, c);",
- "}"));
- }
-
- public void test_argumentDefinitionTest() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "class C {",
- " m([p = 0]) {",
- " return ?p;",
- " }",
- "}"));
- }
-
- public void test_assignToNonAssignable() throws Exception {
- parseUnit("phony_assign_to_non_assignable.dart",
- Joiner.on("\n").join(
- "method() {",
- " 1 + 2 = 3;",
- "}"),
- ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE, 2, 7);
- }
-
- public void test_forComplexVariable() throws Exception {
- parseUnit("phony_for_complex_variable.dart",
- Joiner.on("\n").join(
- "method() {",
- " for (foo + 1 in a) { }",
- "}"),
- ParserErrorCode.FOR_IN_WITH_COMPLEX_VARIABLE, 2, 8);
- }
-
- public void test_forMultipleVariable() throws Exception {
- parseUnit("phony_for_multiple_variable.dart",
- Joiner.on("\n").join(
- "method() {",
- " for (var foo, bar in a) { }",
- "}"),
- ParserErrorCode.FOR_IN_WITH_MULTIPLE_VARIABLES, 2, 17);
- }
-
- public void test_formalParameters_field() throws Exception {
- DartUnit unit = parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "class A {",
- " final foo;",
- " A(this.foo) {}",
- "}"));
- DartClass classNode = (DartClass) unit.getTopLevelNodes().get(0);
- DartMethodDefinition methodNode = (DartMethodDefinition) classNode.getMembers().get(1);
- DartParameter parameterNode = methodNode.getFunction().getParameters().get(0);
- assertTrue(parameterNode.getName() instanceof DartPropertyAccess);
- DartPropertyAccess accessNode = (DartPropertyAccess) parameterNode.getName();
- assertEquals(4, accessNode.getQualifier().getSourceInfo().getLength());
- }
-
- public void test_formalParameters_named() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method({var a : 1, var b : 2}) {",
- "}"));
- }
-
- public void test_formalParameters_named_missingRightBracket() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method({var a : 1) {",
- "}"),
- ParserErrorCode.MISSING_NAMED_PARAMETER_END, 1, 18);
- }
-
- public void test_formalParameters_named_wrongSeparator() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method({var a = 1}) {",
- "}"),
- ParserErrorCode.INVALID_SEPARATOR_FOR_NAMED, 1, 13);
- }
-
- public void test_formalParameters_optional() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method([var a = 1, var b = 2]) {",
- "}"));
- }
-
- public void test_formalParameters_optional_missingRightBrace() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method([var a = 1) {",
- "}"),
- ParserErrorCode.MISSING_OPTIONAL_PARAMETER_END, 1, 18);
- }
-
- public void test_formalParameters_optional_wrongSeparator() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method([var a : 1]) {",
- "}"),
- ParserErrorCode.INVALID_SEPARATOR_FOR_OPTIONAL, 1, 13);
- }
-
- public void test_formalParameters_positional() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method(var a, var b) {",
- "}"));
- }
-
- public void test_formalParameters_positional_named() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method(var a, var b, {var c : 3, var d : 4}) {",
- "}"));
- }
-
- public void test_formalParameters_positional_optional() throws Exception {
- parseUnit("formalParameters.dart",
- Joiner.on("\n").join(
- "method(var a, var b, [var c = 3, var d = 4]) {",
- "}"));
- }
-
- public void test_forVariableInitializer() throws Exception {
- parseUnit("phony_for_multiple_variable.dart",
- Joiner.on("\n").join(
- "method() {",
- " for (var foo = 1 in a) { }",
- "}"),
- ParserErrorCode.FOR_IN_WITH_VARIABLE_INITIALIZER, 2, 18);
- }
-
- public void test_forIn_withConst() throws Exception {
- parseUnit("test.dart",
- Joiner.on("\n").join(
- "main() {",
- " for (const v in a) { }",
- "}"));
- }
-
- public void test_varInFunctionType() throws Exception {
- parseUnit("phony_var_in_function_type.dart",
- "typedef func(var arg());",
- ParserErrorCode.FUNCTION_TYPED_PARAMETER_IS_VAR, 1, 18);
- }
-
- public void test_finalInFunctionType() throws Exception {
- parseUnit("phony_var_in_function_type.dart",
- "typedef func(final arg());",
- ParserErrorCode.FUNCTION_TYPED_PARAMETER_IS_FINAL, 1, 20);
- }
-
- public void test_export_withoutLibraryDirective() {
- parseUnit("test.dart", Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "export 'Lib.dart';",
- ""),
- ParserErrorCode.EXPORT_WITHOUT_LIBRARY_DIRECTIVE, 2, 1);
- }
-
- public void test_unicodeNormalizedFormC_inString() throws Exception {
- byte bytes[] = new byte[] {
- (byte) 0x76,
- (byte) 0x61,
- (byte) 0x72,
- (byte) 0x20,
- (byte) 0x73,
- (byte) 0x3D,
- (byte) 0x27,
- (byte) 0x41,
- (byte) 0xCC,
- (byte) 0x8A,
- (byte) 0x27,
- (byte) 0x3B};
- String source = new String(bytes, "UTF-8");
- DartParserRunner parserRunner = parseSource(source);
- assertErrors(
- parserRunner.getErrors(),
- errEx(ParserErrorCode.INVALID_UNICODE_NORMALIZATION, 1, 8, 1));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698