Index: compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java |
diff --git a/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java b/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java |
index 78510d7d6e23c8425d13c66e139320d6d280e145..467bd37f1b196c62ef3f517de9c360f9eadb29ec 100644 |
--- a/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java |
+++ b/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java |
@@ -53,7 +53,7 @@ public class SyntaxTest extends AbstractParserTest { |
" void set g2=(int v) {}", |
"}")); |
} |
- |
+ |
public void test_const() { |
DartUnit unit = parseUnit(getName() + ".dart", makeCode( |
"// filler filler filler filler filler filler filler filler filler filler", |
@@ -674,6 +674,45 @@ public class SyntaxTest extends AbstractParserTest { |
ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, 12, 42); |
} |
+ 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( |