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

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

Issue 10012012: Error recovery for unsupported operator overloads (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 'got rid of syntax test' Created 8 years, 8 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/ParserRecoveryTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/parser/ParserRecoveryTest.java b/compiler/javatests/com/google/dart/compiler/parser/ParserRecoveryTest.java
index 4d0e9381612e228f96f1f717ff395892441675d7..84d302f82b2c2015e53bfcb1f860422503a173b6 100644
--- a/compiler/javatests/com/google/dart/compiler/parser/ParserRecoveryTest.java
+++ b/compiler/javatests/com/google/dart/compiler/parser/ParserRecoveryTest.java
@@ -252,4 +252,31 @@ public class ParserRecoveryTest extends AbstractParserTest {
DartClass bar = (DartClass)unit.getTopLevelNodes().get(3);
assertEquals("bar", bar.getName().getName());
}
+
+ public void testBadOperatorRecovery() {
+ DartUnit unit = parseUnit("phony_bad_operator_recovery",
+ Joiner.on("\n").join(
+ "class foo {",
+ " operator / (arg) {}",
+ " operator /= (arg) {}",
+ " operator ][ (arg) {}",
+ " operator === (arg) {}",
+ " operator + (arg) {}",
+ "}"),
+ ParserErrorCode.OPERATOR_IS_NOT_USER_DEFINABLE, 3, 12,
+ ParserErrorCode.OPERATOR_IS_NOT_USER_DEFINABLE, 4, 12,
+ ParserErrorCode.OPERATOR_IS_NOT_USER_DEFINABLE, 5, 12);
+ DartClass foo = (DartClass)unit.getTopLevelNodes().get(0);
+ assertEquals("foo", foo.getName().getName());
+ DartMethodDefinition opDiv = (DartMethodDefinition)foo.getMembers().get(0);
+ assertEquals("/", ((DartIdentifier)opDiv.getName()).getName());
+ DartMethodDefinition opAssignDiv = (DartMethodDefinition)foo.getMembers().get(1);
+ assertEquals("/=", ((DartIdentifier)opAssignDiv.getName()).getName());
+ DartMethodDefinition opNonsense = (DartMethodDefinition)foo.getMembers().get(2);
+ assertEquals("][", ((DartIdentifier)opNonsense.getName()).getName());
+ DartMethodDefinition opEquiv = (DartMethodDefinition)foo.getMembers().get(3);
+ assertEquals("===", ((DartIdentifier)opEquiv.getName()).getName());
+ DartMethodDefinition opPlus = (DartMethodDefinition)foo.getMembers().get(4);
+ assertEquals("+", ((DartIdentifier)opPlus.getName()).getName());
+ }
}

Powered by Google App Engine
This is Rietveld 408576698