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

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

Issue 10542094: Issue 3477. Report error when built-in identifier used as type name (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 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 37b460a30522ce7c0a6de7a10cecca0c13e79242..346335cfd75f2fb2a69dacd724f62c04c1ec411a 100644
--- a/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
+++ b/compiler/javatests/com/google/dart/compiler/parser/NegativeParserTest.java
@@ -789,7 +789,179 @@ public class NegativeParserTest extends CompilerTestCase {
""),
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 assert {}",
+ "class call {}",
+ "class Dynamic {}",
+ "class equals {}",
+ "class factory {}",
+ "class get {}",
+ "class implements {}",
+ "class interface {}",
+ "class negate {}",
+ "class operator {}",
+ "class set {}",
+ "class static {}",
+ "class typedef {}",
+ ""),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 2, 7, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 3, 7, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 4, 7, 4),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 5, 7, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 6, 7, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 7, 7, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 8, 7, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 9, 7, 10),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 10, 7, 9),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 11, 7, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 12, 7, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 13, 7, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 14, 7, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 15, 7, 7));
+ }
+
+ /**
+ * 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_asInterfaceName() {
+ parseExpectErrors(
+ Joiner.on("\n").join(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "interface abstract {}",
+ "interface assert {}",
+ "interface call {}",
+ "interface Dynamic {}",
+ "interface equals {}",
+ "interface factory {}",
+ "interface get {}",
+ "interface implements {}",
+ "interface interface {}",
+ "interface negate {}",
+ "interface operator {}",
+ "interface set {}",
+ "interface static {}",
+ "interface typedef {}",
+ ""),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 2, 11, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 3, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 4, 11, 4),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 5, 11, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 6, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 7, 11, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 8, 11, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 9, 11, 10),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 10, 11, 9),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 11, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 12, 11, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 13, 11, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 14, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, 15, 11, 7));
+ }
+
+ /**
+ * 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<assert> {}",
+ "class C03<call> {}",
+ "class C04<Dynamic> {}",
+ "class C05<equals> {}",
+ "class C06<factory> {}",
+ "class C07<get> {}",
+ "class C08<implements> {}",
+ "class C09<interface> {}",
+ "class C10<negate> {}",
+ "class C11<operator> {}",
+ "class C12<set> {}",
+ "class C13<static> {}",
+ "class C14<typedef> {}",
+ ""),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 2, 11, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 3, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 4, 11, 4),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 5, 11, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 6, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 7, 11, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 8, 11, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 9, 11, 10),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 10, 11, 9),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 11, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 12, 11, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 13, 11, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 14, 11, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME, 15, 11, 7));
+ }
+
+ /**
+ * 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 assert();",
+ "typedef call();",
+ "typedef Dynamic();",
+ "typedef equals();",
+ "typedef factory();",
+ "typedef get();",
+ "typedef implements();",
+ "typedef interface();",
+ "typedef negate();",
+ "typedef operator();",
+ "typedef set();",
+ "typedef static();",
+ "typedef typedef();",
+ ""),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 2, 9, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 3, 9, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 4, 9, 4),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 5, 9, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 6, 9, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 7, 9, 7),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 8, 9, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 9, 9, 10),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 10, 9, 9),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 11, 9, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 12, 9, 8),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 13, 9, 3),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 14, 9, 6),
+ errEx(ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, 15, 9, 7));
+ }
+
public void test_qualifiedType_inForIn() {
parseExpectErrors(Joiner.on("\n").join(
"// filler filler filler filler filler filler filler filler filler filler",

Powered by Google App Engine
This is Rietveld 408576698