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

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

Issue 9148026: Recompile unit with potential conflict/dependency on some top-level symbol. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Restore "holes". Tests for them. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java b/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
index fff045290b51cf1de249dc919619d47f0528f19a..410c24fd9f9a36c013d4e295562723e047861605 100644
--- a/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
+++ b/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
@@ -12,6 +12,8 @@ import com.google.dart.compiler.ast.DartIdentifier;
import com.google.dart.compiler.ast.DartMethodDefinition;
import com.google.dart.compiler.ast.DartUnit;
+import java.util.Set;
+
/**
* Negative Parser/Syntax tests.
*/
@@ -445,4 +447,93 @@ public class NegativeParserTest extends CompilerTestCase {
"}"),
errEx(ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT, 4, 16, 1));
}
+
+ /**
+ * 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#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());
+ }
}

Powered by Google App Engine
This is Rietveld 408576698