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

Unified Diff: dart/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.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/NegativeParserTest.java
diff --git a/dart/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java b/dart/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
deleted file mode 100644
index e1c94ca4e033a9e1a218effc8d3ee9ad840f2102..0000000000000000000000000000000000000000
--- a/dart/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
+++ /dev/null
@@ -1,1053 +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.CompilerTestCase;
-import com.google.dart.compiler.ast.DartClass;
-import com.google.dart.compiler.ast.DartIdentifier;
-import com.google.dart.compiler.ast.DartMethodDefinition;
-import com.google.dart.compiler.ast.DartNode;
-import com.google.dart.compiler.ast.DartUnit;
-
-import static com.google.dart.compiler.common.ErrorExpectation.assertErrors;
-import static com.google.dart.compiler.common.ErrorExpectation.errEx;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Negative Parser/Syntax tests.
- */
-public class NegativeParserTest extends CompilerTestCase {
- public void test_deprecatedGetterSyntax() {
- parseExpectErrors("get foo() {}", errEx(ParserErrorCode.DEPRECATED_GETTER, 1, 5, 3));
- }
-
- public void test_deprecatedStrictEQ() {
- parseExpectErrors(makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "main() {",
- " 1 === 2;",
- "}",
- ""), errEx(ParserErrorCode.DEPRECATED_STRICT_EQ, 3, 5, 3));
- }
-
- public void test_deprecatedStrictNE() {
- parseExpectErrors(makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "main() {",
- " 1 !== 2;",
- "}",
- ""), errEx(ParserErrorCode.DEPRECATED_STRICT_NE, 3, 5, 3));
- }
-
- public void test_deprecatedAbstract() {
- parseExpectWarnings(makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "abstract class A {",
- " abstract m();",
- "}",
- ""), errEx(ParserErrorCode.DEPRECATED_ABSTRACT_METHOD, 3, 3, 8));
- }
-
- public void testFieldInitializerInRedirectionConstructor1() {
- parseExpectErrors(
- "class A { A(x) { } A.foo() : this(5), y = 5; var y; }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 39, 5),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 30, 7));
- }
-
- public void test_deprecatedFunctionLiteral() {
- parseExpectWarnings(
- makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "main() {",
- " var x = f() => 42;",
- " var y = int g() => 87;",
- "}",
- ""),
- errEx(ParserErrorCode.DEPRECATED_FUNCTION_LITERAL, 3, 11, 1),
- errEx(ParserErrorCode.DEPRECATED_FUNCTION_LITERAL, 4, 11, 3));
- }
-
- public void testFieldInitializerInRedirectionConstructor2() {
- parseExpectErrors(
- "class A { A(x) { } A.foo() : y = 5, this(5); var y; }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 30, 5),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 37, 7));
- }
-
- public void testFieldInitializerInRedirectionConstructor3() {
- parseExpectErrors(
- "class A { A.foo(x) { } A() : y = 5, this.foo(5); var y; }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 30, 5),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 37, 11));
- }
-
- public void testFieldInitializerInRedirectionConstructor4() {
- parseExpectErrors(
- "class A { A(x) { } A.foo(this.y, this.z) : this(5); var y; var z;}",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_PARAM, 1, 26, 6),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_PARAM, 1, 34, 6),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 44, 7));
- }
-
- public void testFieldInitializerInRedirectionConstructor5() {
- parseExpectErrors(
- "class A { A(x) { } A.foo(this.y) : this(5), z = 7; var y; var z;}",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_PARAM, 1, 26, 6),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 45, 5),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 36, 7));
- }
-
- public void testSuperInRedirectionConstructor1() {
- parseExpectErrors(
- "class A { A(x) { } A.foo() : this(5), super(); var y; }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 39, 7),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 30, 7));
- }
-
- public void testSuperInRedirectionConstructor2() {
- parseExpectErrors(
- "class A { A(x) { } A.foo() : super(), this(5); var y; }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_OTHER, 1, 30, 7),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_ITSELF, 1, 39, 7));
- }
-
- public void testMultipleRedirectionConstructors() {
- parseExpectErrors(
- "class A { A(x) { } A.foo() : this(1), this(2); }",
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_MULTIPLE, 1, 30, 7),
- errEx(ParserErrorCode.REDIRECTING_CONSTRUCTOR_MULTIPLE, 1, 39, 7));
- }
-
- /**
- * May be parsing errors, but not exceptions.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=4040
- */
- public void test_incompleteArguments() {
- parseSource(makeCode(
- "// filler filler filler filler filler filler filler filler filler filler",
- "main() {",
- " f(a: 0,",
- "}",
- ""));
- }
-
- public void testSuperMultipleInvocationsTest() {
- String source =
- makeCode(
- "class A {",
- " int a;",
- " A(this.a);",
- " A.foo(int x, int y);",
- "}",
- "",
- "class B extends A {",
- " int b1;",
- " int b2;",
- " B(int x) : this.b1 = x, super(x), this.b2 = x, super.foo(x, x);",
- "}");
- parseExpectErrors(
- source,
- errEx(ParserErrorCode.SUPER_CONSTRUCTOR_MULTIPLE, 10, 29, 8),
- errEx(ParserErrorCode.SUPER_CONSTRUCTOR_MULTIPLE, 10, 52, 15));
- }
-
- public void testIncompleteClassDeclaration_noLBrace() {
- String sourceCode =
- makeCode(
- "class Baz",
- "class Foo<T> implements Bar<T> {",
- " Foo(T head, Bar<T> tail);",
- "}");
- DartUnit unit =
- parseSourceUnitErrors(
- sourceCode,
- ParserErrorCode.EXPECTED_CLASS_DECLARATION_LBRACE.getMessage(),
- 2,
- 1);
- // check structure of AST, top level Baz and Foo expected
- assertEquals(2, unit.getTopLevelNodes().size());
- assertEquals(
- makeCode(
- "// unit Test.dart",
- "class Baz {",
- "}",
- "",
- "class Foo<T> implements Bar<T> {",
- "",
- " Foo(T head, Bar<T> tail) ;",
- "}",
- ""),
- unit.toSource());
- }
-
- /**
- * Language specification requires that factory should be declared in class. However declaring
- * factory on top level should not cause exceptions in compiler. To ensure this we parse top level
- * factory into normal {@link DartMethodDefinition}.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=345
- */
- public void test_badTopLevelFactory() {
- DartUnit unit =
- parseSourceUnitErrors(
- "factory foo() {}",
- ParserErrorCode.FACTORY_CANNOT_BE_TOP_LEVEL.getMessage(),
- 1,
- 1);
- DartMethodDefinition factory = (DartMethodDefinition) unit.getTopLevelNodes().get(0);
- assertNotNull(factory);
- // this factory has name, which is allowed for normal method
- assertEquals(true, factory.getName() instanceof DartIdentifier);
- assertEquals("foo", ((DartIdentifier) factory.getName()).getName());
- }
-
- public void test_defaultParameterValue_inClosureTypedef() {
- parseExpectErrors(
- "typedef void f(int a, [int b = 12345, inc c]);",
- errEx(ParserErrorCode.DEFAULT_VALUE_CAN_NOT_BE_SPECIFIED_IN_TYPEDEF, 1, 32, 5));
- }
-
- public void test_defaultParameterValue_inClosure() {
- parseExpectErrors(
- "class A {void f(void cb(int a, [int b = 12345, int c])) {}}",
- errEx(ParserErrorCode.DEFAULT_VALUE_CAN_NOT_BE_SPECIFIED_IN_CLOSURE, 1, 41, 5));
- }
-
- public void test_optionalPositionalParameterValue_inSetter() {
- parseExpectErrors(
- "class A { set f([int b]); }",
- errEx(ParserErrorCode.OPTIONAL_POSITIONAL_PARAMETER_NOT_ALLOWED, 1, 18, 5));
- }
-
- public void test_namedParameterValue_inSetter() {
- parseExpectErrors(
- "class A { set f({int b}); }",
- errEx(ParserErrorCode.NAMED_PARAMETER_NOT_ALLOWED, 1, 18, 5));
- }
-
- public void test_missingEndOfOptionalParameters() {
- parseExpectErrors(
- "class A {void m(var p1, [var p2 = const []) {} }",
- errEx(ParserErrorCode.MISSING_OPTIONAL_PARAMETER_END, 1, 43, 1));
- }
-
- public void test_optionalPositionalParameterValue_inOperator() {
- parseExpectErrors(
- "class A { operator []=(int a, [int b]); }",
- errEx(ParserErrorCode.OPTIONAL_POSITIONAL_PARAMETER_NOT_ALLOWED, 1, 32, 5));
- }
-
- public void test_namedParameterValue_inOperator() {
- parseExpectErrors(
- "class A { operator []=(int a, {int b}); }",
- errEx(ParserErrorCode.NAMED_PARAMETER_NOT_ALLOWED, 1, 32, 5));
- }
-
- /**
- * If keyword "extends" is mistyped in type parameters declaration, we should report about this
- * and then recover correctly.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=341
- */
- public void test_parseTypeParameter_expectedExtends_mistypedExtends() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "class A {",
- "}",
- "class B<X ex> {",
- "}",
- "class C<X extneds A> {",
- "}",
- "class D<X extneds A, Y extends A> {",
- "}"));
- // check expected errors
- assertErrors(
- parserRunner.getErrors(),
- errEx(ParserErrorCode.EXPECTED_EXTENDS, 3, 11, 2),
- errEx(ParserErrorCode.EXPECTED_EXTENDS, 5, 11, 7),
- errEx(ParserErrorCode.EXPECTED_EXTENDS, 7, 11, 7));
- // check structure of AST
- DartUnit dartUnit = parserRunner.getDartUnit();
- String expected =
- Joiner.on("\n").join(
- "// unit " + getName(),
- "class A {",
- "}",
- "",
- "class B<X> {",
- "}",
- "",
- "class C<X extends A> {",
- "}",
- "",
- "class D<X extends A, Y extends A> {",
- "}");
- String actual = dartUnit.toSource().trim();
- if (!expected.equals(actual)) {
- System.err.println("Expected:\n" + expected);
- System.err.println("\nActual:\n" + actual);
- }
- assertEquals(expected, actual);
- }
-
- /**
- * Type parameters declaration is not finished.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=341
- */
- public void test_parseTypeParameter_unfinishedTypeParameters() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "class ClassWithLongEnoughName {",
- "}",
- "class B<X {",
- "}",
- "class C {",
- "}"));
- // check expected errors
- assertErrors(
- parserRunner.getErrors(),
- errEx(ParserErrorCode.EXPECTED_EXTENDS, 3, 11, 1),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 4, 1, 1),
- errEx(ParserErrorCode.EXPECTED_CLASS_DECLARATION_LBRACE, 5, 1, 5));
- // check structure of AST
- DartUnit dartUnit = parserRunner.getDartUnit();
- assertEquals(
- Joiner.on("\n").join(
- "// unit " + getName(),
- "class ClassWithLongEnoughName {",
- "}",
- "",
- "class B<X> {",
- "}",
- "",
- "class C {",
- "}"),
- dartUnit.toSource().trim());
- }
-
- /**
- * Type parameters declaration is not finished, next top level element beginning encountered. May
- * be use just types new class declaration before existing one.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=341
- */
- public void test_parseTypeParameter_nextTopLevelInTheMiddle() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "class ClassWithLongEnoughName {",
- "}",
- "class B<X",
- "class C {",
- "}"));
- // check expected errors
- assertErrors(parserRunner.getErrors(),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 4, 1, 5));
-
- // check structure of AST
- DartUnit dartUnit = parserRunner.getDartUnit();
- assertEquals(
- Joiner.on("\n").join(
- "// unit " + getName(),
- "class ClassWithLongEnoughName {",
- "}",
- "",
- "class B<X> {",
- "}",
- "",
- "class C {",
- "}"),
- dartUnit.toSource().trim());
- }
-
- /**
- * Function signatures require the name to be an identifier; especially true at the top level.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=839
- */
- public void testTopLevelFunctionNotIdentifier() {
- parseExpectErrors(
- "foo.baz() {}",
- errEx(ParserErrorCode.FUNCTION_NAME_EXPECTED_IDENTIFIER, 1, 1, 7));
- }
-
- public void testInvalidStringInterpolation() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "void main() {",
- " print(\"1 ${42} 2 ${} 3\");",
- " print(\"1 ${42} 2 ${10;} 3\");",
- " print(\"1 ${42} 2 ${10,20} 3\");",
- " print(\"1 ${42} 2 ${10 20} 3\");",
- " print(\"$\");",
- " print(\"$",
- "}"),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN, 2, 22, 1),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 2, 23, 3),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 3, 24, 1),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 3, 25, 1),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 4, 24, 1),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 4, 25, 2),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 4, 27, 1),
- errEx(ParserErrorCode.EXPECTED_TOKEN, 5, 25, 2),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 5, 27, 1),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 6, 11, 0),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 7, 11, 0),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 7, 11, 1),
- errEx(ParserErrorCode.UNEXPECTED_TOKEN_IN_STRING_INTERPOLATION, 8, 1, 1),
- errEx(ParserErrorCode.INCOMPLETE_STRING_LITERAL, 8, 1, 1),
- errEx(ParserErrorCode.EXPECTED_COMMA_OR_RIGHT_PAREN, 8, 2, 0));
- }
-
- public void testDeprecatedFactoryInInterface() {
- parseExpectWarnings(
- "interface foo factory bar {}",
- errEx(ParserErrorCode.DEPRECATED_INTERFACE, 1, 1, 9),
- errEx(ParserErrorCode.DEPRECATED_USE_OF_FACTORY_KEYWORD, 1, 15, 7));
- }
-
- public void test_deprecatedRawString() {
- parseExpectWarnings(
- "String s() { return @'s'; }",
- errEx(ParserErrorCode.DEPRECATED_RAW_STRING, 1, 21, 1));
- }
-
- public void test_useExtendsInTypedef() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "typedef ParameterizedFun1<T, U extends bool, V>(T t, U u);",
- ""));
- }
-
- public void test_abstractTopLevel_class() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "abstract class A {",
- "}"));
- }
-
- public void test_abstractTopLevel_interface() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "abstract interface A {",
- "}"),
- errEx(ParserErrorCode.DEPRECATED_INTERFACE, 2, 10, 9),
- errEx(ParserErrorCode.ABSTRACT_TOP_LEVEL_ELEMENT, 2, 1, 8));
- }
-
- public void test_deprecatedInterface() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "interface A {",
- "}"),
- errEx(ParserErrorCode.DEPRECATED_INTERFACE, 2, 1, 9));
- }
-
- public void test_abstractTopLevel_typedef() {
- parseExpectErrors(
- "abstract typedef void f();",
- errEx(ParserErrorCode.ABSTRACT_TOP_LEVEL_ELEMENT, 1, 1, 8));
- }
-
- public void test_abstractTopLevel_method() {
- parseExpectErrors(
- "abstract void foo() {}",
- errEx(ParserErrorCode.ABSTRACT_TOP_LEVEL_ELEMENT, 1, 1, 8));
- }
-
- public void test_incompleteExpressionInInterpolation() {
- parseExpectErrors(
- "var s = 'fib(3) = ${fib(3}';",
- errEx(ParserErrorCode.EXPECTED_COMMA_OR_RIGHT_PAREN, 1, 26, 1));
- }
-
- public void test_interfaceMethodWithBody() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "interface A {",
- " foo() {",
- " }",
- "}"),
- errEx(ParserErrorCode.DEPRECATED_INTERFACE, 2, 1, 9),
- errEx(ParserErrorCode.INTERFACE_METHOD_WITH_BODY, 3, 3, 3));
- }
-
- /**
- * The Language Specification in the section 6.1 states: "It is a compile-time error to preface a
- * function declaration with the built-in identifier static."
- */
- public void test_staticFunction_topLevel() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "static foo() {",
- "}"),
- errEx(ParserErrorCode.TOP_LEVEL_CANNOT_BE_STATIC, 2, 1, 6));
- }
-
- /**
- * The Language Specification in the section 6.1 states: "It is a compile-time error to preface a
- * function declaration with the built-in identifier static."
- */
- public void test_staticFunction_local() {
- DartParserRunner parserRunner =
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "topLevelMethodWithLongEnoughNameToForceWrapping() {",
- " static int localFunction() {",
- " }",
- "}"),
- errEx(ParserErrorCode.LOCAL_CANNOT_BE_STATIC, 3, 3, 6));
- // Check that "static" was ignored and "int" parsed as return type.
- assertEquals(
- makeCode(
- "// unit " + getName(),
- "",
- "topLevelMethodWithLongEnoughNameToForceWrapping() {",
- " int localFunction() {",
- " };",
- "}"),
- parserRunner.getDartUnit().toSource());
- }
-
- public void test_positionalArgument_afterNamed() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "f(r1, [n1, n2]) {}",
- "foo() {",
- " f(-1, n1: 1, 2);",
- "}"),
- errEx(ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT, 4, 16, 1));
- }
-
- public void test_unaryPlus() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "var a = 1;",
- "var b = -1;",
- "var c = +1;",
- "var d = -a;",
- "var e = +a;",
- "var f = + 1;",
- ""),
- errEx(ParserErrorCode.NO_UNARY_PLUS_OPERATOR, 6, 9, 1),
- errEx(ParserErrorCode.NO_SPACE_AFTER_PLUS, 7, 9, 1));
- }
-
- public void test_formalParameters_const() throws Exception {
- parseExpectErrors(
- Joiner.on("\n").join(
- "func_const(const x) {}",
- "func_constTyped(const int $) {}"),
- errEx(ParserErrorCode.FORMAL_PARAMETER_IS_CONST, 1, 12, 5),
- errEx(ParserErrorCode.FORMAL_PARAMETER_IS_CONST, 2, 17, 5));
- }
-
- /**
- * Test with variants of function declarations and function literal invocations.
- */
- public void test_functionDeclaration_functionLiteral() {
- DartParserRunner parserRunner =
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "foo() {",
- " f0(p){}", // declaration of function as statement
- " int f1(p){}", // declaration of function as statement, has type
- " var res = (p){}(1);", // invocation of function literal in assignment
- " (p){}(2);", // invocation of function literal in statement, no name
- " f3(p) => 4;", // function with => arrow ends with ';'
- " (5);", // this is separate statement, not invocation of previous function
- " join(promises, (p) => 6);", // function with => arrow as argument
- " join(promises, (p) {return 7;});", // function with block as argument
- "}",
- ""));
- assertEquals(
- makeCode(
- "// unit " + getName(),
- "",
- "foo() {",
- " f0(p) {",
- " };",
- " int f1(p) {",
- " };",
- " var res = (p) {",
- " }(1);",
- " (p) {",
- " }(2);",
- " f3(p) {",
- " return 4;",
- " };",
- " (5);",
- " join(promises, (p) {",
- " return 6;",
- " });",
- " join(promises, (p) {",
- " return 7;",
- " });",
- "}"),
- parserRunner.getDartUnit().toSource());
- }
-
- /**
- * Test for {@link DartUnit#getTopDeclarationNames()}.
- */
- public void test_getTopDeclarationNames() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class MyClass {}",
- "class MyInterface {}",
- "topLevelMethod() {}",
- "int get topLevelGetter {return 0;}",
- "void set topLevelSetter(int v) {}",
- "typedef void MyTypeDef();",
- ""));
- DartUnit unit = parserRunner.getDartUnit();
- // Check top level declarations.
- Set<String> names = unit.getTopDeclarationNames();
- assertEquals(6, names.size());
- assertTrue(names.contains("MyClass"));
- assertTrue(names.contains("MyInterface"));
- assertTrue(names.contains("topLevelMethod"));
- assertTrue(names.contains("topLevelGetter"));
- assertTrue(names.contains("topLevelSetter"));
- assertTrue(names.contains("MyTypeDef"));
- }
-
- /**
- * Test for {@link DartUnit#getTopDeclarationNames()} and qualified top-level method name.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=1738
- */
- public void test_getTopDeclarationNames_badName() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "void my.method() {}",
- ""));
- DartUnit unit = parserRunner.getDartUnit();
- // We have top-level node...
- List<DartNode> topLevelNodes = unit.getTopLevelNodes();
- assertEquals(1, topLevelNodes.size());
- // ...but it has wrong name, so ignored.
- Set<String> names = unit.getTopDeclarationNames();
- assertEquals(0, names.size());
- }
-
- /**
- * Test for {@link DartUnit#getDeclarationNames()}.
- */
- public void test_getDeclarationNames() throws Exception {
- DartParserRunner parserRunner =
- parseSource(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class MyClass<TypeVar> {",
- " myMethod(int pA, int pB) {",
- " int varA;",
- " try {",
- " } catch(var ex) {",
- " }",
- " }",
- "}",
- "topLevelMethod() {}",
- "int get topLevelGetter {return 0;}",
- "void set topLevelSetter(int setterParam) {}",
- "typedef void MyTypeDef();",
- ""));
- DartUnit unit = parserRunner.getDartUnit();
- // Check all declarations.
- Set<String> names = unit.getDeclarationNames();
- assertEquals(12, names.size());
- assertTrue(names.contains("MyClass"));
- assertTrue(names.contains("TypeVar"));
- assertTrue(names.contains("myMethod"));
- assertTrue(names.contains("pA"));
- assertTrue(names.contains("pB"));
- assertTrue(names.contains("varA"));
- assertTrue(names.contains("ex"));
- assertTrue(names.contains("topLevelMethod"));
- assertTrue(names.contains("topLevelGetter"));
- assertTrue(names.contains("topLevelSetter"));
- assertTrue(names.contains("setterParam"));
- assertTrue(names.contains("MyTypeDef"));
- }
-
- /**
- * There was bug in diet parser, it did not understand new "arrow" syntax of function definition.
- */
- public void test_dietParser_functionArrow() {
- DartParserRunner parserRunner =
- DartParserRunner.parse(
- getName(),
- Joiner.on("\n").join(
- "class ClassWithVeryLongNameEnoughToForceLineWrapping {",
- " foo() => return 0;",
- "}",
- ""),
- true);
- assertErrors(parserRunner.getErrors());
- assertEquals(
- Joiner.on("\n").join(
- "// unit " + getName(),
- "class ClassWithVeryLongNameEnoughToForceLineWrapping {",
- "",
- " foo() {",
- " }",
- "}"),
- parserRunner.getDartUnit().toSource().trim());
- }
-
- /**
- * "get" is valid name for method, it can cause warning, but not parsing failure.
- */
- public void test_methodNamed_get() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " void get() {}",
- "}",
- ""));
- }
-
- /**
- * "set" is valid name for method, it can cause warning, but not parsing failure.
- */
- public void test_methodNamed_set() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " void set() {}",
- "}",
- ""));
- }
-
- /**
- * "operator" is valid name for method, it can cause warning, but not parsing failure.
- */
- public void test_methodNamed_operator() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " void operator() {}",
- "}",
- ""));
- }
-
- /**
- * We can parse operator "call" declaration.
- */
- public void test_operator_call() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " operator call() {}",
- "}",
- ""));
- }
-
- /**
- * We can parse operator "equals" declaration.
- */
- public void test_operator_equals() {
- DartParserRunner runner = parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " operator ==(other) => false;",
- "}",
- ""));
- DartClass clazz = (DartClass) runner.getDartUnit().getTopLevelNodes().get(0);
- DartMethodDefinition method = (DartMethodDefinition) clazz.getMembers().get(0);
- assertTrue(method.getModifiers().isOperator());
- }
-
- /**
- * "native" can be specified only for classes.
- */
- public void test_native_inInterace() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "interface A native 'N' {",
- "}",
- ""),
- errEx(ParserErrorCode.DEPRECATED_INTERFACE, 2, 1, 9),
- errEx(ParserErrorCode.NATIVE_ONLY_CLASS, 2, 13, 6));
- }
-
- /**
- * "native" can be specified only for classes without "extends".
- */
- public void test_native_classWithExtends() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- "}",
- "class B extends A native 'N' {",
- "}",
- ""),
- errEx(ParserErrorCode.NATIVE_ONLY_CORE_LIB, 4, 19, 6));
- }
-
- /**
- * "native" can be specified only in "corelib".
- */
- public void test_native_onlyCoreLib() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A native 'N' {",
- "}",
- ""),
- errEx(ParserErrorCode.NATIVE_ONLY_CORE_LIB, 2, 9, 6));
- }
-
- /**
- * "native" can be specified only in "corelib".
- */
- public void test_native_onlyCoreLib_factory() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " factory A() native;",
- "}",
- ""),
- errEx(ParserErrorCode.NATIVE_ONLY_CORE_LIB, 3, 15, 6));
- }
-
- /**
- * "native" can be specified only in "corelib".
- */
- public void test_native_onlyCoreLib_method() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " factory A() native;",
- "}",
- ""),
- errEx(ParserErrorCode.NATIVE_ONLY_CORE_LIB, 3, 15, 6));
- }
-
- /**
- * The spec in the section 10.28 says:
- * <p>
- * It is a compile-time error if a built-in identifier is used as the declared name of a class,
- * interface, type variable or type alias.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=3477
- */
- public void test_builtInIdentifier_asClassName() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class abstract {}",
- "class as {}",
- "class dynamic {}",
- "class export {}",
- "class external {}",
- "class factory {}",
- "class get {}",
- "class implements {}",
- "class import {}",
- "class library {}",
- "class operator {}",
- "class part {}",
- "class set {}",
- "class static {}",
- "class typedef {}",
- ""),
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 2, 7, 8), // abstract
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 3, 7, 2), // as
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 4, 7, 7), // dynamic
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 5, 7, 6), // export
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 6, 7, 8), // external
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 7, 7, 7), // factory
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 8, 7, 3), // get
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 9, 7, 10), // implements
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 10, 7, 6), // import
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 11, 7, 7), // library
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 12, 7, 8), // operator
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 13, 7, 4), // part
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 14, 7, 3), // set
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 15, 7, 6), // static
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 16, 7, 7)); // typedef
- }
-
- /**
- * The spec in the section 10.28 says:
- * <p>
- * It is a compile-time error if a built-in identifier is used as the declared name of a class,
- * interface, type variable or type alias.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=3477
- */
- public void test_builtInIdentifier_asTypevariableName() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class C01<abstract> {}",
- "class C02<as> {}",
- "class C03<dynamic> {}",
- "class C04<export> {}",
- "class C05<external> {}",
- "class C06<factory> {}",
- "class C07<get> {}",
- "class C08<implements> {}",
- "class C09<import> {}",
- "class C10<library> {}",
- "class C11<operator> {}",
- "class C12<part> {}",
- "class C13<set> {}",
- "class C14<static> {}",
- "class C15<typedef> {}",
- ""),
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 2, 11, 8), // abstract
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 3, 11, 2), // as
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 4, 11, 7), // dynamic
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 5, 11, 6), // export
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 6, 11, 8), // external
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 7, 11, 7), // factory
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 8, 11, 3), // get
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 9, 11, 10), // implements
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 10, 11, 6), // import
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 11, 11, 7), // library
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 12, 11, 8), // operator
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 13, 11, 4), // part
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 14, 11, 3), // set
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 15, 11, 6), // static
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 16, 11, 7)); // typedef
- }
-
- /**
- * The spec in the section 10.28 says:
- * <p>
- * It is a compile-time error if a built-in identifier is used as the declared name of a class,
- * interface, type variable or type alias.
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=3477
- */
- public void test_builtInIdentifier_asTypedefName() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "typedef abstract();",
- "typedef as();",
- "typedef dynamic();",
- "typedef export();",
- "typedef external();",
- "typedef factory();",
- "typedef get();",
- "typedef implements();",
- "typedef import();",
- "typedef library();",
- "typedef operator();",
- "typedef part();",
- "typedef set();",
- "typedef static();",
- "typedef typedef();",
- ""),
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 2, 9, 8), // abstract
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 3, 9, 2), // as
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 4, 9, 7), // dynamic
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 5, 9, 6), // export
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 6, 9, 8), // external
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 7, 9, 7), // factory
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 8, 9, 3), // get
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 9, 9, 10), // implements
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 10, 9, 6), // import
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 11, 9, 7), // library
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 12, 9, 8), // operator
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 13, 9, 4), // part
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 14, 9, 3), // set
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 15, 9, 6), // static
- errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 16, 9, 7)); // typedef
- }
-
- /**
- * There is ambiguity in parsing function expression inside of initializer.
- * <p>
- * But we should be able to parse when function expression is inside of "new expression".
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=2339
- */
- public void test_functionExpression_inInitializer_newExpression() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " A(var p) {}",
- "}",
- "class B {",
- " var f;",
- " B() : f = new A(() => 42) {",
- " }",
- "}",
- ""));
- }
-
- /**
- * There is ambiguity in parsing function expression inside of initializer.
- * <p>
- * But we should be able to parse when function expression is inside of "const expression".
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=2339
- */
- public void test_functionExpression_inInitializer_constExpression() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "class A {",
- " const A(var p) {}",
- "}",
- "class B {",
- " var f;",
- " B() : f = const A(() => 42) {",
- " }",
- "}",
- ""));
- }
-
- /**
- * There is ambiguity in parsing function expression inside of initializer.
- * <p>
- * But we should be able to parse when function expression is inside of "method invocation".
- * <p>
- * http://code.google.com/p/dart/issues/detail?id=2339
- */
- public void test_functionExpression_inInitializer_methodInvocation() {
- parseExpectErrors(
- Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "foo(var p) {}",
- "class B {",
- " var f;",
- " B() : f = foo(() => 42) {",
- " }",
- "}",
- ""));
- }
-
- public void test_qualifiedType_inForIn() {
- parseExpectErrors(Joiner.on("\n").join(
- "// filler filler filler filler filler filler filler filler filler filler",
- "foo() {",
- " for (pref.A a in elements) {",
- " }",
- "}",
- ""));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698