Index: compiler/javatests/com/google/dart/compiler/resolver/NegativeResolverTest.java |
diff --git a/compiler/javatests/com/google/dart/compiler/resolver/NegativeResolverTest.java b/compiler/javatests/com/google/dart/compiler/resolver/NegativeResolverTest.java |
index 7b6e34d8528cbd76916930fc319f72fef5e039b8..6bb3b9620b144393e76094073a1aace09741007b 100644 |
--- a/compiler/javatests/com/google/dart/compiler/resolver/NegativeResolverTest.java |
+++ b/compiler/javatests/com/google/dart/compiler/resolver/NegativeResolverTest.java |
@@ -214,6 +214,17 @@ public class NegativeResolverTest extends CompilerTestCase { |
errEx(ResolverErrorCode.SUPER_IN_FACTORY_CONSTRUCTOR, 4, 12, 5)); |
} |
+ public void testNameConflict_field_field() { |
+ checkSourceErrors( |
+ makeCode( |
+ "class ClassDeclarationWithLongEnoughNameToForceLineSplitting {", |
+ " var foo;", |
+ " var foo;", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 2, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3)); |
+ } |
+ |
public void testCall1() { |
checkNumErrors("StaticInstanceCallNegativeTest.dart", 1); |
} |
@@ -262,44 +273,315 @@ public class NegativeResolverTest extends CompilerTestCase { |
checkNumErrors("ConstVariableInitializationNegativeTest2.dart", 1); |
} |
- public void testNameShadowNegativeTest1() { |
- checkNumErrors("NameShadowNegativeTest1.dart", 1); |
+ public void test_nameShadow_topLevel_getterSetter_class() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "get foo() {}", |
+ "set bar(x) {}", |
+ "class foo {}", |
+ "class bar{}"), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 4, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 5, 7, 3)); |
} |
- public void testNameShadowNegativeTest2() { |
- checkNumErrors("NameShadowNegativeTest2.dart", 1); |
+ public void test_nameShadow_topLevel_class_getterSetter() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class foo {}", |
+ "class bar {}", |
+ "get foo() {}", |
+ "set bar(x) {}"), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 4, 5, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 5, 5, 3)); |
} |
- public void testNameShadowNegativeTest4() { |
- checkNumErrors("NameShadowNegativeTest4.dart", 1); |
+ public void test_nameShadow_topLevel_getter_setter() { |
+ checkSourceErrors(makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "get bar() {}", |
+ "set bar(x) {}")); |
} |
- public void testNameShadowNegativeTest5() { |
- checkNumErrors("NameShadowNegativeTest5.dart", 1); |
+ public void test_nameShadow_topLevel_setter_getter() { |
+ checkSourceErrors(makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "set bar(x) {}", |
+ "get bar() {}")); |
} |
- public void testNameShadowNegativeTest6() { |
- checkNumErrors("NameShadowNegativeTest6.dart", 1); |
+ public void test_nameShadow_topLevel_getters() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "get bar() {}", |
+ "get bar() {}"), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3)); |
} |
- public void testNameShadowNegativeTest7() { |
- checkNumErrors("NameShadowNegativeTest7.dart", 1); |
+ public void test_nameShadow_topLevel_setters() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "set bar(x) {}", |
+ "set bar(x) {}"), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3)); |
} |
- public void testNameShadowNegativeTest8() { |
- checkNumErrors("NameShadowNegativeTest8.dart", 1); |
+ /** |
+ * Multiple unnamed constructor definitions. |
+ */ |
+ public void test_nameShadow_unnamedConstructors() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " A(x) {}", |
+ " A(x,y) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 1), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 1)); |
+ { |
+ String message = errors.get(0).getMessage(); |
+ assertTrue(message, message.contains("'A'")); |
+ } |
+ { |
+ String message = errors.get(1).getMessage(); |
+ assertTrue(message, message.contains("'A'")); |
+ } |
} |
- public void testNameShadowNegativeTest9() { |
- checkNumErrors("NameShadowNegativeTest9.dart", 1); |
+ /** |
+ * Multiple unnamed constructor definitions. Make sure modifiers works as expected. |
+ */ |
+ public void test_nameShadow_unnamedConstructors_constModifier() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " A(x) {}", |
+ " const A(x,y) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 1), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 9, 1), |
+ errEx(ResolverErrorCode.CONST_CONSTRUCTOR_CANNOT_HAVE_BODY, 4, 9, 1)); |
+ { |
+ String message = errors.get(0).getMessage(); |
+ assertTrue(message, message.contains("'A'")); |
+ } |
} |
- public void testNameShadowNegativeTest10() { |
- checkNumErrors("NameShadowNegativeTest10.dart", 1); |
+ /** |
+ * Named constructor shadows another named constructor. |
+ */ |
+ public void test_nameShadow_namedConstructors() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " A.foo() {}", |
+ " A.foo() {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 5), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 5)); |
+ { |
+ String message = errors.get(0).getMessage(); |
+ assertTrue(message, message.contains("'A.foo'")); |
+ } |
+ { |
+ String message = errors.get(1).getMessage(); |
+ assertTrue(message, message.contains("'A.foo'")); |
+ } |
} |
- public void testNameShadowNegativeTest11() { |
- checkNumErrors("NameShadowNegativeTest11.dart", 1); |
+ /** |
+ * Method shadows another method. |
+ */ |
+ public void test_nameShadow_methods() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " foo() {}", |
+ " foo() {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 3)); |
+ } |
+ |
+ /** |
+ * Field shadows method. |
+ */ |
+ public void test_nameShadow_method_field() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " foo() {}", |
+ " var foo;", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); |
+ } |
+ |
+ /** |
+ * Static method shadows instance method. |
+ */ |
+ public void test_nameShadow_method_staticMethod() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " foo(x) {}", |
+ " static foo(a,b) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 10, 3)); |
+ } |
+ |
+ /** |
+ * Field shadows another field. |
+ */ |
+ public void test_nameShadow_fields() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " var _a;", |
+ " var _a;", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 2), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 2)); |
+ } |
+ |
+ /** |
+ * Field shadows setter/getter. |
+ */ |
+ public void test_nameShadow_setter_field() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " set foo(x) {}", |
+ " get foo() {}", |
+ " var foo;", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); |
+ } |
+ |
+ /** |
+ * Setter shadows field. |
+ */ |
+ public void test_nameShadow_field_setter() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " var foo;", |
+ " set foo(x) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); |
+ } |
+ |
+ /** |
+ * Method shadows setter. |
+ */ |
+ public void test_nameShadow_setter_method() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " set foo(x) {}", |
+ " foo() {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 3)); |
+ } |
+ |
+ /** |
+ * Getter shadows field. |
+ */ |
+ public void test_nameShadow_field_getter() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " var foo;", |
+ " get foo() {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); |
+ } |
+ |
+ /** |
+ * Setter shadows another setter. |
zundel
2011/12/12 16:02:59
Setter --> Getter and setter --> getter
|
+ */ |
+ public void test_nameShadow_getters() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " get foo() {}", |
+ " set foo(x) {}", |
+ " get foo() {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); |
+ } |
+ |
+ /** |
+ * Setter shadows another setter. |
+ */ |
+ public void test_nameShadow_setters() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " set foo(x) {}", |
+ " get foo() {}", |
+ " set foo(x) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); |
+ } |
+ |
+ /** |
+ * Field shadows getter. |
+ */ |
+ public void test_nameShadow_getter_field() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " get foo() {}", |
+ " var foo;", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); |
+ } |
+ |
+ /** |
+ * Setter shadows method. |
+ */ |
+ public void test_nameShadow_method_setter() { |
+ checkSourceErrors( |
+ makeCode( |
+ "// filler filler filler filler filler filler filler filler filler filler", |
+ "class A {", |
+ " foo() {}", |
+ " set foo(x) {}", |
+ "}"), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), |
+ errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); |
} |
public void testUnresolvedSuperFieldNegativeTest() { |