Index: compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java |
diff --git a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java |
index 556cc154177ec5cb1778c1abb29237d463aabfca..bc9d1b6b1c11a63809bf3edd2e7d886ff55c8c31 100644 |
--- a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java |
+++ b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java |
@@ -163,25 +163,74 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase { |
} |
/** |
+ * It is a static warning if the type of "switch expression" may not be assigned to the type of |
+ * "case expression". |
* <p> |
* http://code.google.com/p/dart/issues/detail?id=3269 |
*/ |
- public void test_switchExpression_case_typeMismatch() throws Exception { |
+ public void test_switchExpression_case_switchTypeMismatch() throws Exception { |
AnalyzeLibraryResult libraryResult = analyzeLibrary( |
"// filler filler filler filler filler filler filler filler filler filler", |
"main() {", |
" int v = 1;", |
" switch (v) {", |
" case 0: break;", |
+ " }", |
+ " switch (v) {", |
+ " case 'a': break;", |
+ " }", |
+ "}", |
+ ""); |
+ assertErrors( |
+ libraryResult.getErrors(), |
+ errEx(TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE, 8, 10, 3)); |
+ } |
+ |
+ /** |
+ * It is a compile-time error if the values of the case expressions do not all have the same type. |
+ * <p> |
+ * http://code.google.com/p/dart/issues/detail?id=3528 |
+ */ |
+ public void test_switchExpression_case_notIntString() throws Exception { |
+ AnalyzeLibraryResult libraryResult = analyzeLibrary( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "main() {", |
+ " var v = 1;", |
+ " switch (v) {", |
Brian Wilkerson
2012/06/12 14:58:50
The first two switch statements are not necessary
|
+ " case 0: break;", |
+ " }", |
+ " switch (v) {", |
+ " case '0': break;", |
+ " }", |
+ " switch (v) {", |
+ " case 0.0: break;", |
+ " }", |
+ "}", |
+ ""); |
+ assertErrors( |
+ libraryResult.getErrors(), |
+ errEx(TypeErrorCode.CASE_EXPRESSION_SHOULD_BE_INT_STRING, 11, 10, 3)); |
+ } |
+ |
+ /** |
+ * It is a compile-time error if the values of the case expressions do not all have the same type. |
+ * <p> |
+ * http://code.google.com/p/dart/issues/detail?id=3528 |
+ */ |
+ public void test_switchExpression_case_differentTypes() throws Exception { |
+ AnalyzeLibraryResult libraryResult = analyzeLibrary( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "main() {", |
+ " var v = 1;", |
+ " switch (v) {", |
+ " case 0: break;", |
" case 'a': break;", |
- " case 12.3: break;", |
" }", |
"}", |
""); |
assertErrors( |
libraryResult.getErrors(), |
- errEx(TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE, 6, 10, 3), |
- errEx(TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE, 7, 10, 4)); |
+ errEx(TypeErrorCode.CASE_EXPRESSIONS_SHOULD_BE_SAME_TYPE, 6, 10, 3)); |
} |
/** |