| /******************************************************************************* |
| * Copyright (c) 2000, 2008 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.tests.compiler.regression; |
| |
| import java.io.File; |
| import java.util.Map; |
| |
| import junit.framework.Test; |
| |
| import org.eclipse.jdt.core.ToolFactory; |
| import org.eclipse.jdt.core.tests.util.Util; |
| import org.eclipse.jdt.core.util.ClassFileBytesDisassembler; |
| import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; |
| import org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader; |
| import org.eclipse.jdt.internal.compiler.env.IBinaryMethod; |
| import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; |
| |
| public class ProblemTypeAndMethodTest extends AbstractRegressionTest { |
| public ProblemTypeAndMethodTest(String name) { |
| super(name); |
| } |
| // Static initializer to specify tests subset using TESTS_* static variables |
| // All specified tests which does not belong to the class are skipped... |
| static { |
| // TESTS_NAMES = new String[] { "test127" }; |
| // TESTS_NUMBERS = new int[] { 5 }; |
| // TESTS_RANGE = new int[] { 169, 180 }; |
| } |
| |
| public static Test suite() { |
| return buildAllCompliancesTestSuite(testClass()); |
| } |
| |
| public static Class testClass() { |
| return ProblemTypeAndMethodTest.class; |
| } |
| |
| public void test001() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " interface Moosh { void foo(); }\n" + |
| "\n" + |
| " static abstract class A implements Moosh {}\n" + |
| "\n" + |
| " static class W extends A {}\n" + |
| " static class Y extends A {}\n" + |
| " static class Z extends A {}\n" + |
| " public static void main(String[] args) {\n" + |
| " new W(); // throws ClassFormatError\n" + |
| " }\n" + |
| "}" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 6)\n" + |
| " static class W extends A {}\n" + |
| " ^\n" + |
| "The type X.W must implement the inherited abstract method X.Moosh.foo()\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 7)\n" + |
| " static class Y extends A {}\n" + |
| " ^\n" + |
| "The type X.Y must implement the inherited abstract method X.Moosh.foo()\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 8)\n" + |
| " static class Z extends A {}\n" + |
| " ^\n" + |
| "The type X.Z must implement the inherited abstract method X.Moosh.foo()\n" + |
| "----------\n", |
| null /* no extra class libraries */, |
| true /* flush output directory */, |
| null /* no custom options */, |
| true /* do not generate output */, |
| false /* do not show category */, |
| false /* do not show warning token */, |
| false /* do not skip javac for this peculiar test */, |
| false /* do not perform statements recovery */); |
| ClassFileReader reader = getClassFileReader(OUTPUT_DIR + File.separator +"X$W.class", "X$W"); |
| IBinaryMethod[] methods = reader.getMethods(); |
| assertEquals("Wrong size", 2, methods.length); |
| int counter = 0; |
| for (int i = 0; i < 2; i++) { |
| IBinaryMethod method = methods[i]; |
| if (new String(method.getSelector()).equals("foo")) { |
| counter++; |
| } |
| } |
| assertEquals("Wrong number of foo method", 1, counter); |
| |
| reader = getClassFileReader(OUTPUT_DIR + File.separator +"X$Y.class", "X$Y"); |
| methods = reader.getMethods(); |
| assertEquals("Wrong size", 2, methods.length); |
| counter = 0; |
| for (int i = 0; i < 2; i++) { |
| IBinaryMethod method = methods[i]; |
| if (new String(method.getSelector()).equals("foo")) { |
| counter++; |
| } |
| } |
| assertEquals("Wrong number of foo method", 1, counter); |
| |
| reader = getClassFileReader(OUTPUT_DIR + File.separator +"X$Z.class", "X$Z"); |
| methods = reader.getMethods(); |
| assertEquals("Wrong size", 2, methods.length); |
| counter = 0; |
| for (int i = 0; i < 2; i++) { |
| IBinaryMethod method = methods[i]; |
| if (new String(method.getSelector()).equals("foo")) { |
| counter++; |
| } |
| } |
| assertEquals("Wrong number of foo method", 1, counter); |
| } |
| |
| public void test002() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X extends Zork {\n" + |
| " void foo() {\n" + |
| " Zork z = this;\n" + |
| " String s = this;\n" + |
| " Zork2 z2 = this;\n" + |
| " }\n" + |
| " Zork fz = this;\n" + |
| " String fs = this;\n" + |
| " Zork2 fz2 = this;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 1)\n" + |
| " public class X extends Zork {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Zork z = this;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 4)\n" + |
| " String s = this;\n" + |
| " ^^^^\n" + |
| "Type mismatch: cannot convert from X to String\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 5)\n" + |
| " Zork2 z2 = this;\n" + |
| " ^^^^^\n" + |
| "Zork2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 7)\n" + |
| " Zork fz = this;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 8)\n" + |
| " String fs = this;\n" + |
| " ^^^^\n" + |
| "Type mismatch: cannot convert from X to String\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 9)\n" + |
| " Zork2 fz2 = this;\n" + |
| " ^^^^^\n" + |
| "Zork2 cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| |
| public void test003() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " Zork field;\n" + |
| " \n" + |
| " void foo(Y y) {\n" + |
| " Object o = y.foo();\n" + |
| " Object s = y.slot;\n" + |
| " y.bar(null);\n" + |
| " Object s2 = new Y().slot;\n" + |
| " Object f = field;\n" + |
| " }\n" + |
| "}\n" + |
| "class Y {\n" + |
| " Zork foo() { return null; }\n" + |
| " void bar(Zork z) {}\n" + |
| " Zork slot;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " Zork field;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " Object o = y.foo();\n" + |
| " ^^^\n" + |
| "The method foo() from the type Y refers to the missing type Zork\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " Object s = y.slot;\n" + |
| " ^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " y.bar(null);\n" + |
| " ^^^\n" + |
| "The method bar(Zork) from the type Y refers to the missing type Zork\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 8)\n" + |
| " Object s2 = new Y().slot;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 9)\n" + |
| " Object f = field;\n" + |
| " ^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 13)\n" + |
| " Zork foo() { return null; }\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 14)\n" + |
| " void bar(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "9. ERROR in X.java (at line 15)\n" + |
| " Zork slot;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| |
| // https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 |
| public void test004() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q/Zork.java", //----------------------------------------------------------------------- |
| "package q;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import p.OtherFoo;\n" + |
| "import q.Zork;\n" + |
| "\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " OtherFoo ofoo;\n" + |
| " String s1 = ofoo.foo;\n" + |
| " String s2 = ofoo.bar();\n" + |
| " String s3 = ofoo.new OtherMember();\n" + |
| " ofoo.baz(this);\n" + |
| " }\n" + |
| " void bar() {\n" + |
| " OtherX ox;\n" + |
| " String s1 = ox.foo;\n" + |
| " String s2 = ox.bar();\n" + |
| " String s3 = ox.new OtherMember();\n" + |
| " ox.baz(this);\n" + |
| " }\n" + |
| "} \n" + |
| "\n" + |
| "class OtherX {\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 7)\n" + |
| " String s1 = ofoo.foo;\n" + |
| " ^^^^^^^^\n" + |
| "Type mismatch: cannot convert from Zork to String\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 8)\n" + |
| " String s2 = ofoo.bar();\n" + |
| " ^^^^^^^^^^\n" + |
| "Type mismatch: cannot convert from Zork to String\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 9)\n" + |
| " String s3 = ofoo.new OtherMember();\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type mismatch: cannot convert from OtherFoo.OtherMember to String\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 10)\n" + |
| " ofoo.baz(this);\n" + |
| " ^^^\n" + |
| "The method baz(Zork) in the type OtherFoo is not applicable for the arguments (X)\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 14)\n" + |
| " String s1 = ox.foo;\n" + |
| " ^^^^^^\n" + |
| "Type mismatch: cannot convert from Zork to String\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 15)\n" + |
| " String s2 = ox.bar();\n" + |
| " ^^^^^^^^\n" + |
| "Type mismatch: cannot convert from Zork to String\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 16)\n" + |
| " String s3 = ox.new OtherMember();\n" + |
| " ^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type mismatch: cannot convert from OtherX.OtherMember to String\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 17)\n" + |
| " ox.baz(this);\n" + |
| " ^^^\n" + |
| "The method baz(Zork) in the type OtherX is not applicable for the arguments (X)\n" + |
| "----------\n", |
| null, |
| false); |
| |
| // delete binary file Zork (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q" + File.separator + "Zork.class")); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import p.OtherFoo;\n" + |
| "import q.Zork;\n" + |
| "\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " OtherFoo ofoo;\n" + |
| " String s1 = ofoo.foo;\n" + |
| " String s2 = ofoo.bar();\n" + |
| " String s3 = ofoo.new OtherMember();\n" + |
| " ofoo.baz(this);\n" + |
| " }\n" + |
| " void bar() {\n" + |
| " OtherX ox;\n" + |
| " String s1 = ox.foo;\n" + |
| " String s2 = ox.bar();\n" + |
| " String s3 = ox.new OtherMember();\n" + |
| " ox.baz(this);\n" + |
| " }\n" + |
| "} \n" + |
| "\n" + |
| "class OtherX {\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 1)\n" + |
| " import p.OtherFoo;\n" + |
| " ^\n" + |
| "The type q.Zork cannot be resolved. It is indirectly referenced from required .class files\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 2)\n" + |
| " import q.Zork;\n" + |
| " ^^^^^^\n" + |
| "The import q.Zork cannot be resolved\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 7)\n" + |
| " String s1 = ofoo.foo;\n" + |
| " ^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 8)\n" + |
| " String s2 = ofoo.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type OtherFoo refers to the missing type Zork\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 9)\n" + |
| " String s3 = ofoo.new OtherMember();\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type mismatch: cannot convert from OtherFoo.OtherMember to String\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 10)\n" + |
| " ofoo.baz(this);\n" + |
| " ^^^\n" + |
| "The method baz(Zork) from the type OtherFoo refers to the missing type Zork\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 14)\n" + |
| " String s1 = ox.foo;\n" + |
| " ^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 15)\n" + |
| " String s2 = ox.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type OtherX refers to the missing type Zork\n" + |
| "----------\n" + |
| "9. ERROR in X.java (at line 16)\n" + |
| " String s3 = ox.new OtherMember();\n" + |
| " ^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type mismatch: cannot convert from OtherX.OtherMember to String\n" + |
| "----------\n" + |
| "10. ERROR in X.java (at line 17)\n" + |
| " ox.baz(this);\n" + |
| " ^^^\n" + |
| "The method baz(Zork) from the type OtherX refers to the missing type Zork\n" + |
| "----------\n" + |
| "11. ERROR in X.java (at line 22)\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "12. ERROR in X.java (at line 23)\n" + |
| " public Zork foo;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "13. ERROR in X.java (at line 24)\n" + |
| " public Zork bar() { return null; }\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "14. ERROR in X.java (at line 25)\n" + |
| " public void baz(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test005() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo() {\n" + |
| " p.OtherFoo ofoo = new p.OtherFoo();\n" + |
| " ofoo.bar();\n" + |
| " q1.q2.Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 4)\n" + |
| " ofoo.bar();\n" + |
| " ^^^^^^^^^^\n" + |
| "The type q1.q2.Zork cannot be resolved. It is indirectly referenced from required .class files\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " ofoo.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type OtherFoo refers to the missing type Zork\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " q1.q2.Zork z;\n" + |
| " ^^^^^^^^^^\n" + |
| "q1.q2.Zork cannot be resolved to a type\n" + |
| "----------\n", |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test006() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "import q1.q2.*;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " p.OtherFoo ofoo = new p.OtherFoo();\n" + |
| " ofoo.bar();\n" + |
| " Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 1)\n" + |
| " import q1.q2.*;\n" + |
| " ^^\n" + |
| "The import q1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " ofoo.bar();\n" + |
| " ^^^^^^^^^^\n" + |
| "The type q1.q2.Zork cannot be resolved. It is indirectly referenced from required .class files\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " ofoo.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type OtherFoo refers to the missing type Zork\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 6)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test007() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "import q1.q2.Zork;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " p.OtherFoo ofoo = new p.OtherFoo();\n" + |
| " ofoo.bar();\n" + |
| " Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 1)\n" + |
| " import q1.q2.Zork;\n" + |
| " ^^\n" + |
| "The import q1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " ofoo.bar();\n" + |
| " ^^^^^^^^^^\n" + |
| "The type q1.q2.Zork cannot be resolved. It is indirectly referenced from required .class files\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " ofoo.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type OtherFoo refers to the missing type Zork\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 6)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test008() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo() {\n" + |
| " q1.q2.Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 3)\n" + |
| " q1.q2.Zork z;\n" + |
| " ^^\n" + |
| "q1 cannot be resolved to a type\n" + |
| "----------\n", |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test009() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "import q1.q2.*;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 1)\n" + |
| " import q1.q2.*;\n" + |
| " ^^\n" + |
| "The import q1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test010() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| runNegativeTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "import q1.q2.Zork;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " Zork z;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| // compiler options |
| null /* no class libraries */, |
| null /* no custom options */, |
| // compiler results |
| "----------\n" + /* expected compiler log */ |
| "1. ERROR in X.java (at line 1)\n" + |
| " import q1.q2.Zork;\n" + |
| " ^^\n" + |
| "The import q1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test011() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " java[] field1;\n" + |
| " java.lang[] field2;\n" + |
| " void field3;\n" + |
| " void[] field4;\n" + |
| " \n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " java[] field1;\n" + |
| " ^^^^\n" + |
| "java cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " java.lang[] field2;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 4)\n" + |
| " void field3;\n" + |
| " ^^^^^^\n" + |
| "void is an invalid type for the variable field3\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 5)\n" + |
| " void[] field4;\n" + |
| " ^^^^^^\n" + |
| "void[] is an invalid type\n" + |
| "----------\n"); |
| } |
| public void test012() { |
| String expectedResult; |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) { |
| expectedResult = |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " Class c1 = java[].class;\n" + |
| " ^^^^\n" + |
| "java cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " Class c4 = void[].class;\n" + |
| " ^^^^^^\n" + |
| "void[] is an invalid type\n" + |
| "----------\n"; |
| } else { |
| expectedResult = |
| "----------\n" + |
| "1. WARNING in X.java (at line 2)\n" + |
| " Class c1 = java[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 2)\n" + |
| " Class c1 = java[].class;\n" + |
| " ^^^^\n" + |
| "java cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. WARNING in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. WARNING in X.java (at line 4)\n" + |
| " Class c3 = void.class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "6. WARNING in X.java (at line 5)\n" + |
| " Class c4 = void[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 5)\n" + |
| " Class c4 = void[].class;\n" + |
| " ^^^^^^\n" + |
| "void[] is an invalid type\n" + |
| "----------\n"; |
| } |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " Class c1 = java[].class;\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " Class c3 = void.class;\n" + |
| " Class c4 = void[].class;\n" + |
| "}\n", |
| }, |
| expectedResult); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test013() { |
| String expectedResult; |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) { |
| expectedResult = |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n"; |
| } else { |
| expectedResult = |
| "----------\n" + |
| "1. WARNING in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n"; |
| } |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " // check if no prior reference to missing 'java'\n" + |
| " Class c2 = java.lang[].class;\n" + |
| "}\n", |
| }, |
| expectedResult); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test014() { |
| String expectedResult; |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) { |
| expectedResult = |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n"; |
| } else { |
| expectedResult = |
| "----------\n" + |
| "1. WARNING in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Class c2 = java.lang[].class;\n" + |
| " ^^^^^^^^^\n" + |
| "java.lang cannot be resolved to a type\n" + |
| "----------\n"; |
| } |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " // check if no prior reference to missing 'java'\n" + |
| " Class c2 = java.lang[].class;\n" + |
| "}\n", |
| }, |
| expectedResult); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test015() { |
| String expectedResult; |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) { |
| expectedResult = |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " Class a = zork1[].class;\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Class x = zork1.zork2[].class; // compile time error\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " Class a2 = zork1.class;\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 6)\n" + |
| " Class x2 = zork1.zork2.class; // compile time error \n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n"; |
| } else { |
| expectedResult = |
| "----------\n" + |
| "1. WARNING in X.java (at line 2)\n" + |
| " Class a = zork1[].class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 2)\n" + |
| " Class a = zork1[].class;\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. WARNING in X.java (at line 3)\n" + |
| " Class x = zork1.zork2[].class; // compile time error\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 3)\n" + |
| " Class x = zork1.zork2[].class; // compile time error\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. WARNING in X.java (at line 5)\n" + |
| " Class a2 = zork1.class;\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 5)\n" + |
| " Class a2 = zork1.class;\n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. WARNING in X.java (at line 6)\n" + |
| " Class x2 = zork1.zork2.class; // compile time error \n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 6)\n" + |
| " Class x2 = zork1.zork2.class; // compile time error \n" + |
| " ^^^^^\n" + |
| "zork1 cannot be resolved to a type\n" + |
| "----------\n"; |
| } |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " Class a = zork1[].class;\n" + |
| " Class x = zork1.zork2[].class; // compile time error\n" + |
| " \n" + |
| " Class a2 = zork1.class;\n" + |
| " Class x2 = zork1.zork2.class; // compile time error \n" + |
| "}\n", |
| }, |
| expectedResult); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test016() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " java.langz.AClass1 field1;\n" + |
| " java.langz.AClass2 field2;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " java.langz.AClass1 field1;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " java.langz.AClass2 field2;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test017() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " java.langz field1;\n" + |
| " java.langz.AClass2 field2;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " java.langz field1;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " java.langz.AClass2 field2;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test018() { |
| this.runNegativeTest(new String[] { |
| "X.java", |
| "public class X {\n" + |
| " java.langz.AClass1 field1;\n" + |
| " java.langz field2;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " java.langz.AClass1 field1;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " java.langz field2;\n" + |
| " ^^^^^^^^^^\n" + |
| "java.langz cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test019() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(p.OtherFoo ofoo) {\n" + // triggers OtherFoo loading, and q1.q2 pkg creation (for unresolved binary type refs) |
| " a.b.Missing1 m1;\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing2 cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test020() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo extends Zork{\n" + |
| " public class OtherMember extends Zork {}\n" + |
| " public Zork foo;\n" + |
| " public Zork bar() { return null; }\n" + |
| " public void baz(Zork z) {}\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // no need to delete Zork actually - any lazy reference would cause q1.q2 to be created as a package |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(p.OtherFoo ofoo) {\n" + // triggers OtherFoo loading, and q1.q2 pkg creation (for unresolved binary type refs) |
| " a.b.Missing1 m1;\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing2 cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test021() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(p.OtherFoo ofoo) {\n" + |
| " a.b.Missing1 m1;\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " }\n" + |
| "} \n", |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "public class OtherFoo extends q1.q2.Zork{\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " q1.q2.Missing2 m2;\n" + |
| " ^^\n" + |
| "q1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in p\\OtherFoo.java (at line 2)\n" + |
| " public class OtherFoo extends q1.q2.Zork{\n" + |
| " ^^\n" + |
| "q1 cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test022() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo {\n" + |
| " public Zork foo;\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1")); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " a.b.Missing1 m1a;\n" + |
| " p.OtherFoo ofoo;\n" + // triggers OtherFoo loading, and q1.q2 pkg creation (for unresolved binary type refs) |
| " q1.q2.Missing1 m11;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " ^^\n" + |
| "q1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1a;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " ^^\n" + |
| "q1 cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test023() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo {\n" + |
| " public Zork foo;\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // leave package behind |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " a.b.Missing1 m1a;\n" + |
| " p.OtherFoo ofoo;\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1a;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing1 cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test024() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo {\n" + |
| " public Zork foo;\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1/q2 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1/q2")); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " a.b.Missing1 m1a;\n" + |
| " p.OtherFoo ofoo;\n" + // triggers OtherFoo loading, and q1.q2 pkg creation (for unresolved binary type refs) |
| " q1.q2.Missing1 m11;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " ^^^^^\n" + |
| "q1.q2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1a;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing1 cannot be resolved to a type\n" + // inconsistent msg from previous one (error 1) |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test025() { |
| this.runConformTest( |
| new String[] { |
| "p/OtherFoo.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "\n" + |
| "import q1.q2.Zork;\n" + |
| "\n" + |
| "public class OtherFoo {\n" + |
| " public Zork foo;\n" + |
| "}\n", |
| "q1/q2/Zork.java", //----------------------------------------------------------------------- |
| "package q1.q2;\n" + |
| "public class Zork {\n" + |
| "}\n", |
| }, |
| ""); |
| |
| // delete binary folder q1/q2 (i.e. simulate removing it from classpath for subsequent compile) |
| Util.delete(new File(OUTPUT_DIR, "q1/q2")); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " a.b.Missing1 m1a;\n" + |
| " p.OtherFoo ofoo;\n" + // triggers OtherFoo loading, and q1.q2 pkg creation (for unresolved binary type refs) |
| " }\n" + |
| "} \n", |
| "Y.java", //----------------------------------------------------------------------- |
| "public class Y {\n" + |
| " void foo() {\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " }\n" + |
| "} \n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(q1.q2.Missing1 m1) {\n" + |
| " ^^^^^\n" + |
| "q1.q2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " a.b.Missing1 m1a;\n" + |
| " ^\n" + |
| "a cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in Y.java (at line 3)\n" + |
| " q1.q2.Missing1 m11;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "q1.q2.Missing1 cannot be resolved to a type\n" + // inconsistent msg from previous one (error 1) |
| "----------\n", |
| null, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test026() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(Missing1 m1) {\n" + |
| " Missing2 m2 = m1;\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(Missing1 m1) {\n" + |
| " ^^^^^^^^\n" + |
| "Missing1 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Missing2 m2 = m1;\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test027() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X x) {\n" + |
| " new Other().m2 = x;\n" + |
| " Other other = new Other();\n" + |
| " other.m2 = x;\n" + |
| " other.m2.m3 = x;\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class Other {\n" + |
| " Missing2 m2;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " new Other().m2 = x;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " other.m2 = x;\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " other.m2.m3 = x;\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 11)\n" + |
| " Missing2 m2;\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test028() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X x) {\n" + |
| " System.out.println(new Other().m2.m3);\n" + |
| " System.out.println(new Other().m2.m3());\n" + |
| " Missing2.foo();\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class Other {\n" + |
| " Missing2 m2;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " System.out.println(new Other().m2.m3);\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " System.out.println(new Other().m2.m3());\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " Missing2.foo();\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 10)\n" + |
| " Missing2 m2;\n" + |
| " ^^^^^^^^\n" + |
| "Missing2 cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test029() throws Exception { |
| this.runNegativeTest( |
| new String[] { |
| "Y.java", //----------------------------------------------------------------------- |
| "public class Y extends Z {\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in Y.java (at line 1)\n" + |
| " public class Y extends Z {\n" + |
| " ^\n" + |
| "Z cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| // check Y superclass in problem classfile |
| String expectedOutput = |
| "public class Y extends Z {\n"; |
| |
| File f = new File(OUTPUT_DIR + File.separator + "Y.class"); |
| byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(f); |
| ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); |
| String result = disassembler.disassemble(classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); |
| int index = result.indexOf(expectedOutput); |
| if (index == -1 || expectedOutput.length() == 0) { |
| System.out.println(Util.displayString(result, 3)); |
| } |
| if (index == -1) { |
| assertEquals("Wrong contents", expectedOutput, result); |
| } |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test030() { |
| this.runNegativeTest( |
| new String[] { |
| "Y.java", //----------------------------------------------------------------------- |
| "public class Y extends Z {\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in Y.java (at line 1)\n" + |
| " public class Y extends Z {\n" + |
| " ^\n" + |
| "Z cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends Y {\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 1)\n" + |
| " public class X extends Y {\n" + |
| " ^\n" + |
| "The hierarchy of the type X is inconsistent\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test031() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends Y {\n" + |
| "}\n", |
| "Y.java", //----------------------------------------------------------------------- |
| "public class Y extends Z {\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 1)\n" + |
| " public class X extends Y {\n" + |
| " ^\n" + |
| "The hierarchy of the type X is inconsistent\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in Y.java (at line 1)\n" + |
| " public class Y extends Z {\n" + |
| " ^\n" + |
| "Z cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test032() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import existing.*;\n" + |
| "public class X {\n" + |
| " void foo(p.Zork z) {}\n" + |
| " void bar(Zork z) {} // should bind to existing.Zork\n" + |
| "}\n", |
| "p/Clyde.java", //----------------------------------------------------------------------- |
| "package p;\n" + // just so package p does exist |
| "public class Clyde {\n" + |
| "}\n", |
| "existing/Zork.java", //----------------------------------------------------------------------- |
| "package existing;\n" + |
| "public class Zork {\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " void foo(p.Zork z) {}\n" + |
| " ^^^^^^\n" + |
| "p.Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test033() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) { |
| return; |
| } |
| this.runNegativeTest( |
| new String[] { |
| "Y.java", //----------------------------------------------------------------------- |
| "@Z public class Y {\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in Y.java (at line 1)\n" + |
| " @Z public class Y {\n" + |
| " ^\n" + |
| "Z cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| runConformTest( |
| // test directory preparation |
| false /* do not flush output directory */, |
| new String[] { /* test files */ |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends Y {\n" + |
| "}\n", |
| }, |
| // compiler results |
| "" /* expected compiler log */, |
| // runtime results |
| "" /* expected output string */, |
| "" /* expected error string */, |
| // javac options |
| JavacTestOptions.SKIP_UNTIL_FRAMEWORK_FIX /* javac test options */); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test034() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar();\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Zork bar() { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type X1 refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Zork bar() { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test035() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Zork bar() { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Zork bar() { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar();\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type X1 refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test036() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar(x1);\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Object bar(Zork z) { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar(x1);\n" + |
| " ^^^\n" + |
| "The method bar(Zork) from the type X1 refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Object bar(Zork z) { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test037() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Object bar(Zork z) { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Object bar(Zork z) { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar(x1);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar(x1);\n" + |
| " ^^^\n" + |
| "The method bar(Zork) from the type X1 refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test038() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar(x1);\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Object bar(Object o) throws Zork { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar(x1);\n" + |
| " ^^^\n" + |
| "The method bar(Object) from the type X1 refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Object bar(Object o) throws Zork { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test039() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " Object bar(Object o) throws Zork { return null; } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " Object bar(Object o) throws Zork { return null; } \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = x1.bar(x1);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = x1.bar(x1);\n" + |
| " ^^^\n" + |
| "The method bar(Object) from the type X1 refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test040() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(x1);\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(x1);\n" + |
| " ^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test041() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(x1);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(x1);\n" + |
| " ^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test042() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1();\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1();\n" + |
| " ^^^^^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test043() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1();\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1();\n" + |
| " ^^^^^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test044() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(x1){};\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(x1){};\n" + |
| " ^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test045() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(x1){};\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(x1){};\n" + |
| " ^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test046() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(){};\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(){};\n" + |
| " ^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test047() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o = new X1(){};\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Object o = new X1(){};\n" + |
| " ^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test048() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends X1 {\n" + |
| " X(X1 x1) {\n" + |
| " super(x1);\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " super(x1);\n" + |
| " ^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test049() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends X1 {\n" + |
| " X(X1 x1) {\n" + |
| " super(x1);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " super(x1);\n" + |
| " ^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test050() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends X1 {\n" + |
| " X(X1 x1) {\n" + |
| " super();\n" + |
| " }\n" + |
| "}\n", |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " super();\n" + |
| " ^^^^^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test051() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1() throws Zork {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 2)\n" + |
| " public X1() throws Zork {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X extends X1 {\n" + |
| " X(X1 x1) {\n" + |
| " super();\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " super();\n" + |
| " ^^^^^^^^\n" + |
| "The constructor X1() refers to the missing type Zork\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test052() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o;\n" + |
| " o = x1.next.zork;\n" + |
| " o = this.zork;\n" + |
| " o = zork;\n" + |
| " o = x1.next.zork.foo();\n" + |
| " o = this.zork.foo();\n" + |
| " o = zork.foo();\n" + |
| " }\n" + |
| " Zork zork;\n" + |
| "}\n" + |
| "class X1 {\n" + |
| " X1 next;\n" + |
| " Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " o = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " o = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " o = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " o = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 8)\n" + |
| " o = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 9)\n" + |
| " o = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 15)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test053() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void bar(X1 x1) {\n" + |
| " String s;\n" + |
| " s = x1.next.zork;\n" + |
| " s = this.zork;\n" + |
| " s = zork;\n" + |
| " s = x1.next.zork.foo();\n" + |
| " s = this.zork.foo();\n" + |
| " s = zork.foo();\n" + |
| " } \n" + |
| " Zork zork;\n" + |
| "}\n" + |
| "class X1 {\n" + |
| " X1 next;\n" + |
| " Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " s = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " s = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " s = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " s = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 8)\n" + |
| " s = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 9)\n" + |
| " s = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 15)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test054() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void baz(X1 x1) {\n" + |
| " Zork z;\n" + |
| " z = x1.next.zork;\n" + |
| " z = this.zork;\n" + |
| " z = zork;\n" + |
| " z = x1.next.zork.foo();\n" + |
| " z = this.zork.foo();\n" + |
| " z = zork.foo();\n" + |
| " } \n" + |
| " Zork zork;\n" + |
| "}\n" + |
| "class X1 {\n" + |
| " X1 next;\n" + |
| " Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " z = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " z = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 6)\n" + |
| " z = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 7)\n" + |
| " z = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 8)\n" + |
| " z = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 9)\n" + |
| " z = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "9. ERROR in X.java (at line 15)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test055() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1 next;\n" + |
| " public Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 3)\n" + |
| " public Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " Object o;\n" + |
| " o = x1.next.zork;\n" + |
| " o = this.zork;\n" + |
| " o = zork;\n" + |
| " o = x1.next.zork.foo();\n" + |
| " o = this.zork.foo();\n" + |
| " o = zork.foo();\n" + |
| " }\n" + |
| " Zork zork;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " o = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " o = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " o = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " o = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 8)\n" + |
| " o = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 9)\n" + |
| " o = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test056() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1 next;\n" + |
| " public Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 3)\n" + |
| " public Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void bar(X1 x1) {\n" + |
| " String s;\n" + |
| " s = x1.next.zork;\n" + |
| " s = this.zork;\n" + |
| " s = zork;\n" + |
| " s = x1.next.zork.foo();\n" + |
| " s = this.zork.foo();\n" + |
| " s = zork.foo();\n" + |
| " } \n" + |
| " Zork zork;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " s = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " s = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " s = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " s = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 8)\n" + |
| " s = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 9)\n" + |
| " s = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test057() { |
| this.runNegativeTest( |
| new String[] { |
| "X1.java", //----------------------------------------------------------------------- |
| "public class X1 {\n" + |
| " public X1 next;\n" + |
| " public Zork zork;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X1.java (at line 3)\n" + |
| " public Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| true, // flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void baz(X1 x1) {\n" + |
| " Zork z;\n" + |
| " z = x1.next.zork;\n" + |
| " z = this.zork;\n" + |
| " z = zork;\n" + |
| " z = x1.next.zork.foo();\n" + |
| " z = this.zork.foo();\n" + |
| " z = zork.foo();\n" + |
| " } \n" + |
| " Zork zork;\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " z = x1.next.zork;\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 5)\n" + |
| " z = this.zork;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 6)\n" + |
| " z = zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 7)\n" + |
| " z = x1.next.zork.foo();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 8)\n" + |
| " z = this.zork.foo();\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 9)\n" + |
| " z = zork.foo();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 11)\n" + |
| " Zork zork;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false, // do not flush output |
| null, |
| true, // generate output |
| false, |
| false); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test058() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " x1.bar().baz();\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class X1 {\n" + |
| " Zork bar(){}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " x1.bar().baz();\n" + |
| " ^^^\n" + |
| "The method bar() from the type X1 refers to the missing type Zork\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 8)\n" + |
| " Zork bar(){}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test059() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " new X1(x1).baz();\n" + |
| " new X1(null).baz();\n" + |
| " new Zork().baz();\n" + |
| " new X1(x1){}.baz();\n" + |
| " new X1(null){}.baz();\n" + |
| " new Zork(){}.baz();\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class X1 {\n" + |
| " X1(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " new X1(x1).baz();\n" + |
| " ^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " new X1(x1).baz();\n" + |
| " ^^^\n" + |
| "The method baz() is undefined for the type X1\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 4)\n" + |
| " new X1(null).baz();\n" + |
| " ^^^^^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 4)\n" + |
| " new X1(null).baz();\n" + |
| " ^^^\n" + |
| "The method baz() is undefined for the type X1\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 5)\n" + |
| " new Zork().baz();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 6)\n" + |
| " new X1(x1){}.baz();\n" + |
| " ^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 6)\n" + |
| " new X1(x1){}.baz();\n" + |
| " ^^^\n" + |
| "The method baz() is undefined for the type new X1(){}\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 7)\n" + |
| " new X1(null){}.baz();\n" + |
| " ^^^^^^^^\n" + |
| "The constructor X1(Zork) refers to the missing type Zork\n" + |
| "----------\n" + |
| "9. ERROR in X.java (at line 7)\n" + |
| " new X1(null){}.baz();\n" + |
| " ^^^\n" + |
| "The method baz() is undefined for the type new X1(){}\n" + |
| "----------\n" + |
| "10. ERROR in X.java (at line 8)\n" + |
| " new Zork(){}.baz();\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "11. ERROR in X.java (at line 13)\n" + |
| " X1(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test060() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(Zork z) {\n" + |
| " z.bar();\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " void foo(Zork z) {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test061() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(X1 x1) {\n" + |
| " int i = x1.next.z;\n" + |
| " int j = x1.next.zArray;\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class X1 {\n" + |
| " X1 next;\n" + |
| " Zork z;\n" + |
| " Zork[] zArray;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " int i = x1.next.z;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " int j = x1.next.zArray;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 10)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 11)\n" + |
| " Zork[] zArray;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test062() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " X1 x1;\n" + |
| " void foo() {\n" + |
| " int i = x1.next.z;\n" + |
| " int j = x1.next.zArray;\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class X1 {\n" + |
| " X1 next;\n" + |
| " Zork z;\n" + |
| " Zork[] zArray;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " int i = x1.next.z;\n" + |
| " ^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " int j = x1.next.zArray;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 11)\n" + |
| " Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 12)\n" + |
| " Zork[] zArray;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test063() { |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " int i = p.X1.z;\n" + |
| " int j = p.X1.zArray;\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class X1 {\n" + |
| " static Zork z;\n" + |
| " static Zork[] zArray;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 4)\n" + |
| " int i = p.X1.z;\n" + |
| " ^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in p\\X.java (at line 5)\n" + |
| " int j = p.X1.zArray;\n" + |
| " ^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in p\\X.java (at line 10)\n" + |
| " static Zork z;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in p\\X.java (at line 11)\n" + |
| " static Zork[] zArray;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test064() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import java.io.*; \n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " Serializable[] v= new ArrayListExtra[10];\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " Serializable[] v= new ArrayListExtra[10];\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "ArrayListExtra cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test065() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import java.io.*; \n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " int l = array.length;\n" + |
| " Object o = array[1];\n" + |
| "\n" + |
| " }\n" + |
| " Zork[] array;\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " int l = array.length;\n" + |
| " ^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " Object o = array[1];\n" + |
| " ^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 8)\n" + |
| " Zork[] array;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test066() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo() {\n" + |
| " Zork z1 = null;\n" + |
| " Object o = z1;\n" + |
| " Object o1 = z1.z2;\n" + |
| " Object o2 = bar();\n" + |
| " Zork[] array = null;\n" + |
| " int length = array.length;\n" + |
| " }\n" + |
| " Zork bar() {\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork z1 = null;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 6)\n" + |
| " Object o2 = bar();\n" + |
| " ^^^\n" + |
| "The method bar() from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 7)\n" + |
| " Zork[] array = null;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 10)\n" + |
| " Zork bar() {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test067() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) |
| return; |
| this.runNegativeTest( |
| new String[] { |
| "E.java", //----------------------------------------------------------------------- |
| "public class E<T> {\n" + |
| " class SomeType { }\n" + |
| " void foo() {\n" + |
| " E<XYX> list= new E<SomeType>();\n" + |
| " list = new E<SomeType>();\n" + |
| " }\n" + |
| " E<XYX> fList= new E<SomeType>();\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in E.java (at line 4)\n" + |
| " E<XYX> list= new E<SomeType>();\n" + |
| " ^^^\n" + |
| "XYX cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in E.java (at line 7)\n" + |
| " E<XYX> fList= new E<SomeType>();\n" + |
| " ^^^\n" + |
| "XYX cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test068() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) |
| return; |
| this.runNegativeTest( |
| new String[] { |
| "E.java", //----------------------------------------------------------------------- |
| "import java.util.Map;\n" + |
| "public class E<T> {\n" + |
| " static class SomeType { }\n" + |
| " void foo() {\n" + |
| " E<Map<String, ? extends XYX>> list= new E<Map<String, ? extends SomeType>>() {\n" + |
| " };\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in E.java (at line 5)\n" + |
| " E<Map<String, ? extends XYX>> list= new E<Map<String, ? extends SomeType>>() {\n" + |
| " ^^^\n" + |
| "XYX cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test069() { |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "public class X {\n" + |
| " IOException foo() {}\n" + |
| "}\n", |
| "p/Y.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "import java.io.*;\n" + |
| "public class Y {\n" + |
| " void foo(IOException e) {}\n" + |
| " void bar(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 3)\n" + |
| " IOException foo() {}\n" + |
| " ^^^^^^^^^^^\n" + |
| "IOException cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in p\\Y.java (at line 5)\n" + |
| " void bar(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test070() { |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", //----------------------------------------------------------------------- |
| "package p;\n" + |
| "public class X {\n" + |
| " IOException foo() {}\n" + |
| "}\n", |
| "q/Y.java", //----------------------------------------------------------------------- |
| "package q;\n" + |
| "import p.*;\n" + |
| "import java.io.*;\n" + |
| "public class Y {\n" + |
| " void foo(IOException e) {}\n" + |
| " void bar(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 3)\n" + |
| " IOException foo() {}\n" + |
| " ^^^^^^^^^^^\n" + |
| "IOException cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in q\\Y.java (at line 6)\n" + |
| " void bar(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test071() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " IOException foo() {}\n" + |
| "}\n", |
| "Y.java", //----------------------------------------------------------------------- |
| "import java.io.*;\n" + |
| "public class Y {\n" + |
| " void foo(IOException e) {}\n" + |
| " void bar(Zork z) {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " IOException foo() {}\n" + |
| " ^^^^^^^^^^^\n" + |
| "IOException cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in Y.java (at line 4)\n" + |
| " void bar(Zork z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test072() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " public void foo() throws Foo {\n" + |
| " }\n" + |
| " public void bar() throws Zork {\n" + |
| " } \n" + |
| "}\n" + |
| "\n" + |
| "class Foo extends Zork {\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " public void foo() throws Foo {\n" + |
| " ^^^\n" + |
| "No exception of type Foo can be thrown; an exception type must be a subclass of Throwable\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " public void bar() throws Zork {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 8)\n" + |
| " class Foo extends Zork {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test073() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " /**\n" + |
| " * @see Foo.Private#foo()\n" + |
| " * @param p\n" + |
| " */\n" + |
| " void foo(Foo.Private p) {\n" + |
| " p.foo();\n" + |
| " }\n" + |
| "}\n" + |
| "\n" + |
| "class Foo {\n" + |
| " private class Private {\n" + |
| " private void foo(){}\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 6)\n" + |
| " void foo(Foo.Private p) {\n" + |
| " ^^^^^^^^^^^\n" + |
| "The type Foo.Private is not visible\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 7)\n" + |
| " p.foo();\n" + |
| " ^\n" + |
| "The type Foo.Private is not visible\n" + |
| "----------\n" + |
| "3. WARNING in X.java (at line 13)\n" + |
| " private void foo(){}\n" + |
| " ^^^^^\n" + |
| "The method foo() from the type Foo.Private is never used locally\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test074() { |
| String expected = this.complianceLevel <= ClassFileConstants.JDK1_4 |
| ? "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " bar1().foo();\n" + |
| " ^^^^\n" + |
| "The method bar1() from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 6)\n" + |
| " bar3(null);\n" + |
| " ^^^^\n" + |
| "The method bar3(Zork) from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 7)\n" + |
| " bar4(null,null);\n" + |
| " ^^^^\n" + |
| "The method bar4(Zork) from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 9)\n" + |
| " Zork<String> bar1() {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 9)\n" + |
| " Zork<String> bar1() {}\n" + |
| " ^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 10)\n" + |
| " List<Zork> bar2() {}\n" + |
| " ^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 10)\n" + |
| " List<Zork> bar2() {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 11)\n" + |
| " void bar3(Zork<String> z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "9. ERROR in X.java (at line 11)\n" + |
| " void bar3(Zork<String> z) {}\n" + |
| " ^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "10. ERROR in X.java (at line 12)\n" + |
| " void bar4(Zork<String,String> z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "11. ERROR in X.java (at line 12)\n" + |
| " void bar4(Zork<String,String> z) {}\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" |
| : "----------\n" + |
| "1. ERROR in X.java (at line 4)\n" + |
| " bar1().foo();\n" + |
| " ^^^^\n" + |
| "The method bar1() from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 5)\n" + |
| " bar2();\n" + |
| " ^^^^\n" + |
| "The method bar2() from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 6)\n" + |
| " bar3(null);\n" + |
| " ^^^^\n" + |
| "The method bar3(Zork<String>) from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 7)\n" + |
| " bar4(null,null);\n" + |
| " ^^^^\n" + |
| "The method bar4(Zork<String,String>) from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 9)\n" + |
| " Zork<String> bar1() {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 10)\n" + |
| " List<Zork> bar2() {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 11)\n" + |
| " void bar3(Zork<String> z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "8. ERROR in X.java (at line 12)\n" + |
| " void bar4(Zork<String,String> z) {}\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"; |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import java.util.List;\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " bar1().foo();\n" + |
| " bar2();\n" + |
| " bar3(null);\n" + |
| " bar4(null,null);\n" + |
| " }\n" + |
| " Zork<String> bar1() {}\n" + |
| " List<Zork> bar2() {}\n" + |
| " void bar3(Zork<String> z) {}\n" + |
| " void bar4(Zork<String,String> z) {}\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| expected); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test075() { |
| String expected = this.complianceLevel <= ClassFileConstants.JDK1_4 |
| ? "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" |
| : "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. WARNING in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? extends Number>\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. WARNING in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? extends Number>\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork<capture#3-of ?,capture#4-of ? extends Number> cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"; |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(Object o) {\n" + |
| " Zork<?,?> z = (Zork<?, ? extends Number>) o;\n" + |
| " String s = (Zork<?, ? extends Number>) o;\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| expected); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test076() { |
| String expected = this.complianceLevel <= ClassFileConstants.JDK1_4 |
| ? "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" |
| : "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. WARNING in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? super Number>\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. WARNING in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? super Number>\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork<capture#3-of ?,capture#4-of ? super Number> cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"; |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(Object o) {\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number>) o;\n" + |
| " String s = (Zork<?, ? super Number>) o;\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| expected); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=196200 - variation |
| public void test077() { |
| String expected = this.complianceLevel <= ClassFileConstants.JDK1_4 |
| ? "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Syntax error, parameterized types are only available if source level is 1.5\n" + |
| "----------\n" |
| : "----------\n" + |
| "1. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. WARNING in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? super Number[]>\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 3)\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "4. WARNING in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to Zork<?,? extends Number[]>\n" + |
| "----------\n" + |
| "5. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Zork<capture#3-of ?,capture#4-of ? extends Number[]> cannot be resolved to a type\n" + |
| "----------\n" + |
| "6. ERROR in X.java (at line 4)\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"; |
| |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " void foo(Object o) {\n" + |
| " Zork<?,?> z = (Zork<?, ? super Number[]>) o;\n" + |
| " String s = (Zork<?, ? extends Number[]>) o;\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| expected); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=220967 |
| public void test078() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import java.util.List;\n" + |
| "interface B {\n" + |
| " B m(String seq);\n" + |
| "}\n" + |
| "public class X implements B {\n" + |
| " public Zork m(String arg0) {\n" + |
| " return null;\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 6)\n" + |
| " public Zork m(String arg0) {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=220967 - variation |
| public void test079() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "public class X {\n" + |
| " public Zork m(X x) {\n" + |
| " return x;\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " public Zork m(X x) {\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=220967 - variation |
| public void test080() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", //----------------------------------------------------------------------- |
| "import java.util.List;\n" + |
| "interface B {\n" + |
| " void m() throws Exception;\n" + |
| "}\n" + |
| "public class X implements B {\n" + |
| " public void m() throws IOException {\n" + |
| " }\n" + |
| "}\n",//----------------------------------------------------------------------- |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 6)\n" + |
| " public void m() throws IOException {\n" + |
| " ^^^^^^^^^^^\n" + |
| "IOException cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 |
| public void test081() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| Map customOptions = getCompilerOptions(); |
| customOptions.put( CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED); |
| customOptions.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR); |
| customOptions.put(CompilerOptions.OPTION_ReportInvalidJavadocTags, CompilerOptions.ENABLED); |
| this.runNegativeTest( |
| new String[] { |
| "com/ost/util/report/Matrix.java", // ================= |
| "package com.ost.util.report;\n" + |
| "import java.io.Serializable;\n" + |
| "import com.ost.util.report.exceptions.InvalidRowSizeException;\n" + |
| "public class Matrix<T> implements Serializable {\n" + |
| " /**\n" + |
| " * @see exceptions.InvalidRowSizeException2\n" + |
| " */\n" + |
| " public synchronized final void addRow(Object[] row){\n" + |
| " throw new InvalidRowSizeException();\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/FilterConstraintSpecification.java", // ================= |
| "package com.ost.util.report;\n" + |
| "import java.io.Serializable;\n" + |
| "import com.ost.util.report.exceptions.MalformedFilterConstraintSpecification;\n" + |
| "public final class FilterConstraintSpecification implements Serializable, Cloneable {\n" + |
| " private final void makeConstraint(){\n" + |
| " throw new MalformedFilterConstraintSpecification();\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/exceptions/MalformedFilterConstraintSpecification.java", // ================= |
| "package com.ost.util.report.exceptions;\n" + |
| "public class MalformedFilterConstraintSpecification extends RuntimeException {\n" + |
| " /** Creates a new instance of MalformedFilterConstraintSpecification */\n" + |
| " public MalformedFilterConstraintSpecification() {\n" + |
| " super();\n" + |
| " }\n" + |
| " /* Creates a new instance of MalformedFilterConstraintSpecification */\n" + |
| " public MalformedFilterConstraintSpecification(String message) {\n" + |
| " super(message);\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/exceptions/InvalidRowSizeException.java", // ================= |
| "package com.ost.util.report.exceptions;\n" + |
| "public class InvalidRowSizeException extends RuntimeException {\n" + |
| " /** Creates a new instance of InvalidRowSizeException */\n" + |
| " public InvalidRowSizeException() {\n" + |
| " super();\n" + |
| " }\n" + |
| " /* Creates a new instance of InvalidRowSizeException */\n" + |
| " public InvalidRowSizeException(String message) {\n" + |
| " super(message);\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. WARNING in com\\ost\\util\\report\\Matrix.java (at line 4)\n" + |
| " public class Matrix<T> implements Serializable {\n" + |
| " ^^^^^^\n" + |
| "The serializable class Matrix does not declare a static final serialVersionUID field of type long\n" + |
| "----------\n" + |
| "2. ERROR in com\\ost\\util\\report\\Matrix.java (at line 6)\n" + |
| " * @see exceptions.InvalidRowSizeException2\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "Javadoc: exceptions cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in com\\ost\\util\\report\\FilterConstraintSpecification.java (at line 4)\n" + |
| " public final class FilterConstraintSpecification implements Serializable, Cloneable {\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "The serializable class FilterConstraintSpecification does not declare a static final serialVersionUID field of type long\n" + |
| "----------\n" + |
| "2. WARNING in com\\ost\\util\\report\\FilterConstraintSpecification.java (at line 5)\n" + |
| " private final void makeConstraint(){\n" + |
| " ^^^^^^^^^^^^^^^^\n" + |
| "The method makeConstraint() from the type FilterConstraintSpecification is never used locally\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in com\\ost\\util\\report\\exceptions\\MalformedFilterConstraintSpecification.java (at line 2)\n" + |
| " public class MalformedFilterConstraintSpecification extends RuntimeException {\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "The serializable class MalformedFilterConstraintSpecification does not declare a static final serialVersionUID field of type long\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in com\\ost\\util\\report\\exceptions\\InvalidRowSizeException.java (at line 2)\n" + |
| " public class InvalidRowSizeException extends RuntimeException {\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| "The serializable class InvalidRowSizeException does not declare a static final serialVersionUID field of type long\n" + |
| "----------\n", |
| null, |
| false, |
| customOptions); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test082() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runConformTest( |
| new String[] { |
| "com/ost/util/report/Matrix.java", // ================= |
| "package com.ost.util.report;\n" + |
| "import java.io.Serializable;\n" + |
| "import com.ost.util.report.exceptions.InvalidRowSizeException;\n" + |
| "public class Matrix<T> implements Serializable {\n" + |
| " /**\n" + |
| " * @see exceptions.InvalidRowSizeException2\n" + |
| " */\n" + |
| " public synchronized final void addRow(Object[] row){\n" + |
| " throw new InvalidRowSizeException();\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/FilterConstraintSpecification.java", // ================= |
| "package com.ost.util.report;\n" + |
| "import java.io.Serializable;\n" + |
| "import com.ost.util.report.exceptions.MalformedFilterConstraintSpecification;\n" + |
| "public final class FilterConstraintSpecification implements Serializable, Cloneable {\n" + |
| " private final void makeConstraint(){\n" + |
| " throw new MalformedFilterConstraintSpecification();\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/exceptions/MalformedFilterConstraintSpecification.java", // ================= |
| "package com.ost.util.report.exceptions;\n" + |
| "public class MalformedFilterConstraintSpecification extends RuntimeException {\n" + |
| " /** Creates a new instance of MalformedFilterConstraintSpecification */\n" + |
| " public MalformedFilterConstraintSpecification() {\n" + |
| " super();\n" + |
| " }\n" + |
| " /* Creates a new instance of MalformedFilterConstraintSpecification */\n" + |
| " public MalformedFilterConstraintSpecification(String message) {\n" + |
| " super(message);\n" + |
| " }\n" + |
| "}\n", |
| "com/ost/util/report/exceptions/InvalidRowSizeException.java", // ================= |
| "package com.ost.util.report.exceptions;\n" + |
| "public class InvalidRowSizeException extends RuntimeException {\n" + |
| " /** Creates a new instance of InvalidRowSizeException */\n" + |
| " public InvalidRowSizeException() {\n" + |
| " super();\n" + |
| " }\n" + |
| " /* Creates a new instance of InvalidRowSizeException */\n" + |
| " public InvalidRowSizeException(String message) {\n" + |
| " super(message);\n" + |
| " }\n" + |
| "}\n" |
| }, |
| ""); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test083() { |
| this.runConformTest( |
| new String[] { |
| "foo/X.java", // ================= |
| "package foo;\n" + |
| "import foo.exceptions.*;\n" + |
| "public class X {\n" + |
| " class exceptions {}\n" + |
| " exceptions E;\n" + |
| "}\n", |
| "foo/exceptions/Z.java", // ================= |
| "package foo.exceptions;\n" + |
| "public class Z {\n" + |
| "}\n" |
| }, |
| ""); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test084() { |
| this.runNegativeTest( |
| new String[] { |
| "foo/X.java", // ================= |
| "package foo;\n" + |
| "import foo.exceptions.*;\n" + |
| "public class X {\n" + |
| " exceptions E;\n" + |
| "}\n" + |
| "class exceptions {}\n", |
| "foo/exceptions/Z.java", // ================= |
| "package foo.exceptions;\n" + |
| "public class Z {\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. WARNING in foo\\X.java (at line 2)\n" + |
| " import foo.exceptions.*;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "The import foo.exceptions is never used\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in foo\\exceptions\\Z.java (at line 1)\n" + |
| " package foo.exceptions;\n" + |
| " ^^^^^^^^^^^^^^\n" + |
| "The package foo.exceptions collides with a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test085() { |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", // ================= |
| "package p;\n" + |
| "public class X extends zork.Z {\n" + |
| "}\n", |
| "p/Y.java", // ================= |
| "package p;\n" + |
| "import p.zork.Z;\n" + |
| "public class Y {\n" + |
| "}\n", |
| "p/zork/Z.java", // ================= |
| "package p.zork;\n" + |
| "public class Z {\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 2)\n" + |
| " public class X extends zork.Z {\n" + |
| " ^^^^\n" + |
| "zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in p\\Y.java (at line 2)\n" + |
| " import p.zork.Z;\n" + |
| " ^^^^^^^^\n" + |
| "The import p.zork.Z is never used\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test086() { |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", // ================= |
| "package p;\n" + |
| "public class X extends zork.Z {\n" + |
| "}\n", |
| "p/Y.java", // ================= |
| "package p;\n" + |
| "import p.zork.*;\n" + |
| "public class Y {\n" + |
| "}\n", |
| "p/zork/Z.java", // ================= |
| "package p.zork;\n" + |
| "public class Z {\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 2)\n" + |
| " public class X extends zork.Z {\n" + |
| " ^^^^\n" + |
| "zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in p\\Y.java (at line 2)\n" + |
| " import p.zork.*;\n" + |
| " ^^^^^^\n" + |
| "The import p.zork is never used\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test087() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", // ================= |
| "package p;\n" + |
| "public class X extends zork.Z {\n" + |
| "}\n", |
| "p/Y.java", // ================= |
| "package p;\n" + |
| "import static p.zork.Z.M;\n" + |
| "public class Y {\n" + |
| "}\n", |
| "p/zork/Z.java", // ================= |
| "package p.zork;\n" + |
| "public class Z {\n" + |
| " public static class M {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 2)\n" + |
| " public class X extends zork.Z {\n" + |
| " ^^^^\n" + |
| "zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in p\\Y.java (at line 2)\n" + |
| " import static p.zork.Z.M;\n" + |
| " ^^^^^^^^^^\n" + |
| "The import p.zork.Z.M is never used\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=239758 - variation |
| public void test088() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "p/X.java", // ================= |
| "package p;\n" + |
| "public class X extends zork.Z {\n" + |
| "}\n", |
| "p/Y.java", // ================= |
| "package p;\n" + |
| "import static p.zork.Z.*;\n" + |
| "public class Y {\n" + |
| "}\n", |
| "p/zork/Z.java", // ================= |
| "package p.zork;\n" + |
| "public class Z {\n" + |
| " static class M {}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p\\X.java (at line 2)\n" + |
| " public class X extends zork.Z {\n" + |
| " ^^^^\n" + |
| "zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. WARNING in p\\Y.java (at line 2)\n" + |
| " import static p.zork.Z.*;\n" + |
| " ^^^^^^^^\n" + |
| "The import p.zork.Z is never used\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=245304 |
| public void test089() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| Map options = getCompilerOptions(); |
| options.put(CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED); |
| this.runConformTest( |
| new String[] { |
| "com/foo/bar/baz/reporting/dom/ReportExceptionBase.java", // ================ |
| "package com.foo.bar.baz.reporting.dom;\n" + |
| "public class ReportExceptionBase extends Exception {\n" + |
| "}\n", |
| "com/foo/bar/baz/reporting/Report.java", // ================ |
| "package com.foo.bar.baz.reporting;\n" + |
| "import com.foo.bar.baz.reporting.dom.ReportExceptionBase;\n" + |
| "/**\n" + |
| " * {@link dom.ReportDefs.ReportType.foo foo}\n" + |
| " */\n" + |
| "public abstract class Report {\n" + |
| "}\n", |
| "com/foo/bar/baz/reporting/Derived.java", // ================ |
| "package com.foo.bar.baz.reporting;\n" + |
| "import com.foo.bar.baz.reporting.dom.ReportExceptionBase;\n" + |
| "public class Derived {\n" + |
| " public Derived() throws ReportExceptionBase {\n" + |
| " throw new ReportExceptionBase();\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "", |
| null, |
| true, |
| null, |
| options, |
| null); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=247666 |
| public void test090() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "X.java", // ================= |
| "public class X {\n" + |
| "<U,V extends Runnable> void foo(Zork z) {} \n" + |
| " void bar() {\n" + |
| " foo(null);\n" + |
| " } \n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 2)\n" + |
| " <U,V extends Runnable> void foo(Zork z) {} \n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 4)\n" + |
| " foo(null);\n" + |
| " ^^^\n" + |
| "The method foo(Zork) from the type X refers to the missing type Zork\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=252288 |
| public void test091() throws Exception { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "TypeUtils.java", |
| "import java.util.Collection;\n" + |
| "import java.util.Iterator;\n" + |
| "\n" + |
| "public final class TypeUtils {\n" + |
| "\n" + |
| " // personal\n" + |
| "\n" + |
| " private TypeUtils() {\n" + |
| " }\n" + |
| "\n" + |
| " // class\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if a target type is exactly any one in a group of types.\n" + |
| " * @param target Target type. Never null.\n" + |
| " * @param types Group of types. If empty, returns false. Never null.\n" + |
| " * @return True if the target is a valid type.\n" + |
| " */\n" + |
| " public static boolean isIdenticalToAny(Class<?> target, Collection<Class<?>> types) {\n" + |
| " if (target == null) throw new IllegalArgumentException(\n" + |
| " \"Target is null.\");\n" + |
| "\n" + |
| " if (types.contains(target)) return true;\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if a target type is the same or a subtype of (assignable to)\n" + |
| " * a reference type. Convenience method for completeness. Forwards to\n" + |
| " * Class.isAssignableFrom().\n" + |
| " * @param target Target type. Never null.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean isAssignableTo(Class<?> target, Class<?> type) {\n" + |
| " return type.isAssignableFrom(target);\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if a target type is the same or a subtype of (assignable to)\n" + |
| " * any one reference type.\n" + |
| " * @param target Target type. Never null.\n" + |
| " * @param types Reference types (Class). Never null. If empty returns false.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean isAssignableToAny(Class<?> target,\n" + |
| " Collection<Class<?>> types) {\n" + |
| " if (types.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Class<?> type : types) {\n" + |
| " if (type.isAssignableFrom(target)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if any one target type is the same or a subtype of\n" + |
| " * (assignable to) a reference type.\n" + |
| " * @param targets Target types (Class). Never null. If empty returns false.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areAnyAssignableTo(Collection<Class<?>> targets,\n" + |
| " Class<?> type) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Class<?> target : targets) {\n" + |
| " if (type.isAssignableFrom(target)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if any one target type is the same or a subtype of\n" + |
| " * (assignable to) any one reference type.\n" + |
| " * @param targets Target types (Class). Never null. If empty returns false.\n" + |
| " * @param types Reference types (Class). Never null. If empty returns false.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areAnyAssignableToAny(Collection<Class<?>> targets,\n" + |
| " Collection<Class<?>> types) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| " if (types.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Class<?> target : targets) {\n" + |
| " if (isAssignableToAny(target, types)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if a target object\'s type is the same or a subtype of\n" + |
| " * (assignable to) a reference type. Convenience method for completeness.\n" + |
| " * Forwards to Class.isInstance().\n" + |
| " * @param target Target object. Never null.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean isInstanceOf(Object target, Class<?> type) {\n" + |
| " return type.isInstance(target);\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if a target object\'s type is the same or a subtype of\n" + |
| " * (assignable to) any one type.\n" + |
| " * @param target Target object. Never null.\n" + |
| " * @param types Reference types. Never null. If empty returns false.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean isInstanceOfAny(Object target,\n" + |
| " Collection<Class<?>> types) {\n" + |
| " if (types.isEmpty()) return false;\n" + |
| "\n" + |
| " for (Class<?> type : types) {\n" + |
| " if (type.isInstance(target)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if any one target object\'s type is the same or a subtype of\n" + |
| " * (assignable to) a reference type.\n" + |
| " * @param targets Target objects. Never null. If empty returns false.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areAnyInstanceOf(Collection<Object> targets,\n" + |
| " Class<?> type) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Object target : targets) {\n" + |
| " if (type.isInstance(target)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if all target object types are the same or a subtype of\n" + |
| " * (assignable to) a reference type.\n" + |
| " * @param targets Target objects. Never null. If empty returns\n" + |
| " * false.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areAllInstanceOf(Collection<Object> targets,\n" + |
| " Class<?> type) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Object target : targets) {\n" + |
| " if (!type.isInstance(target)) return false;\n" + |
| " }\n" + |
| " return true;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if no target object types are the same or a subtype of\n" + |
| " * (assignable to) a reference type.\n" + |
| " * @param targets Target objects. Never null. If empty returns\n" + |
| " * false.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areNoneInstanceOf(Collection<Object> targets,\n" + |
| " Class<?> type) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Object target : targets) {\n" + |
| " if (type.isInstance(target)) return false;\n" + |
| " }\n" + |
| " return true;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns true if any one target object\'s type is the same or a subtype of\n" + |
| " * (assignable to) any one reference type.\n" + |
| " * @param targets Target objects. Never null. If empty returns\n" + |
| " * false.\n" + |
| " * @param types Reference types. Never null. If empty returns false.\n" + |
| " * @return True if condition is met.\n" + |
| " */\n" + |
| " public static boolean areAnyInstanceOfAny(Collection<Object> targets,\n" + |
| " Collection<Class<?>> types) {\n" + |
| " if (targets.isEmpty()) return false;\n" + |
| " if (types.isEmpty()) return false;\n" + |
| "\n" + |
| " for(Object target : targets) {\n" + |
| " if (isInstanceOfAny(target, types)) return true;\n" + |
| " }\n" + |
| " return false;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is identical to the included\n" + |
| " * reference type.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param type Included reference type. Never null.\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Can be {@code targets}. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> includeIdenticalTo(Collection<Object> targets,\n" + |
| " Class<?> type, Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<?> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (!type.equals(object.getClass())) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is exactly one of the\n" + |
| " * included reference types.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param types Group of included reference types. If empty, returns empty.\n" + |
| " * If null, all types are included (all targets are returned).\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Can be {@code targets}. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> includeIdenticalToAny(\n" + |
| " Collection<Object> targets,\n" + |
| " Collection<Class<?>> types, Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " if (types == null) return retVal;\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (!isIdenticalToAny(object.getClass(), types)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is NOT identical to the\n" + |
| " * excluded reference type.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param type The excluded reference type. Never null.\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Can be {@code targets}. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> excludeIdenticalTo(\n" + |
| " Collection<Object> targets, Class<?> type,\n" + |
| " Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (type.equals(object.getClass())) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is NOT exactly one of the\n" + |
| " * excluded reference types.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param types Group of excluded reference types. If empty, returns empty.\n" + |
| " * If null, no types are excluded (all targets are returned).\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Can be targets. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> excludeIdenticalToAny(\n" + |
| " Collection<Object> targets, Collection<Class<?>> types,\n" + |
| " Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " if (types == null) return retVal;\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (isIdenticalToAny(object.getClass(), types)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is assignable to (an\n" + |
| " * instance of) the included reference type.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param type Included reference type. Never null.\n" + |
| " * @param retVal Return value object. The collection of valid target objects\n" + |
| " * (Object). Can be targets. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> includeAssignableTo(\n" + |
| " Collection<Object> targets, Class<?> type, Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (!type.isInstance(object)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is assignable to (an\n" + |
| " * instance of) any one of the included reference types.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param types Group of included reference types. If empty, returns empty.\n" + |
| " * If null, all types are included (all targets are returned).\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Can be targets. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> includeAssignableToAny(\n" + |
| " Collection<Object> targets, Collection<Class<?>> types,\n" + |
| " Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " if (types == null) return retVal;\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (!isInstanceOfAny(object, types)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is NOT assignable to (an\n" + |
| " * instance of) the excluded reference type.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param type The excluded reference type. Never null.\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> excludeAssignableTo(\n" + |
| " Collection<Object> targets, Class<?> type, Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (type.isInstance(object)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns only those target objects whose type is NOT assignable to (an\n" + |
| " * instance of) any one of the excluded reference types.\n" + |
| " * @param targets Group of target objects. If empty, returns empty. Never\n" + |
| " * null.\n" + |
| " * @param types Group of excluded reference types. If empty, returns empty.\n" + |
| " * If null, no types are excluded (all targets are returned).\n" + |
| " * @param retVal Return value object. The collection of valid target\n" + |
| " * objects. Never null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static Collection<Object> excludeAssignableToAny(\n" + |
| " Collection<Object> targets, Collection<Class<?>> types,\n" + |
| " Collection<Object> retVal) {\n" + |
| " // save targets in retVal\n" + |
| " if (targets != retVal) {\n" + |
| " retVal.clear();\n" + |
| " retVal.addAll(targets);\n" + |
| " }\n" + |
| "\n" + |
| " if (types == null) return retVal;\n" + |
| "\n" + |
| " // remove unwanted targets, by target\n" + |
| " Iterator<Object> objectI = retVal.iterator();\n" + |
| " while (objectI.hasNext()) {\n" + |
| " Object object = objectI.next();\n" + |
| " if (isInstanceOfAny(object, types)) objectI.remove();\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns the first target object whose type is assignable to (an instance\n" + |
| " * of) the reference type.\n" + |
| " * @param targets Group of target objects. If empty, returns null.\n" + |
| " * Never null.\n" + |
| " * @param type Reference type. Never null.\n" + |
| " * @return The result (Object, assignable instance of type). Null if none.\n" + |
| " */\n" + |
| " public static <T extends Class<?>> T getFirstAssignableTo(\n" + |
| " Collection<Object> targets, T type) {\n" + |
| " for(Object target : targets) {\n" + |
| " if (type.isInstance(target)) return target;\n" + |
| " }\n" + |
| "\n" + |
| " return null;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Returns the first target object whose type is exactly the specified type.\n" + |
| " * @param targets Group of target objects (Object). If empty, returns null.\n" + |
| " * Never null.\n" + |
| " * @param type The type. Never null. objects (Object). Can be targets. Never\n" + |
| " * null.\n" + |
| " * @return The result (Object, exact instance of type). Null if none.\n" + |
| " */\n" + |
| " public static Object getFirstIdenticalTo(Collection targets, Class type) {\n" + |
| " Iterator targetI = targets.iterator();\n" + |
| " while (targetI.hasNext()) {\n" + |
| " Object target = targetI.next();\n" + |
| " if (type.equals(target.getClass())) return target;\n" + |
| " }\n" + |
| "\n" + |
| " return null;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Gets a target object T from a source object S in a group of objects, and\n" + |
| " * returns the target objects in result group R. A group object is ignored\n" + |
| " * if it is not a source type or, if it is a source type, its target object\n" + |
| " * is not a target type.\n" + |
| " * @param group Temp input group of shared exposed objects. If null, returns\n" + |
| " * empty.\n" + |
| " * @param sourceType Desired source object type. Never null.\n" + |
| " * @param getter Gets a target object from a source object. Never null.\n" + |
| " * @param targetType Desired target object type. Never null.\n" + |
| " * @param retVal Temp output group of shared exposed target objects. Never\n" + |
| " * null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static <S,T,TT extends T,R extends Collection<? super TT>> R getAll(\n" + |
| " Collection<?> group, Class<? extends S> sourceType, Getter<S,T> getter,\n" + |
| " Class<TT> targetType, R retVal) {\n" + |
| " if (sourceType == null) throw new IllegalArgumentException(\n" + |
| " \"Source type is null.\");\n" + |
| " if (getter == null) throw new IllegalArgumentException(\n" + |
| " \"Getter is null.\");\n" + |
| " if (targetType == null) throw new IllegalArgumentException(\n" + |
| " \"Target type is null.\");\n" + |
| " if (retVal == null) throw new IllegalArgumentException(\n" + |
| " \"Return value is null.\");\n" + |
| " retVal.clear();\n" + |
| "\n" + |
| " if (group == null) return retVal;\n" + |
| "\n" + |
| " for (Object obj : group) {\n" + |
| " if (!sourceType.isInstance(obj)) continue; // ignore\n" + |
| " S source = (S) obj;\n" + |
| " T target = getter.getFrom(source);\n" + |
| " if (!targetType.isInstance(target)) continue; // ignore\n" + |
| " retVal.add((TT) target);\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "\n" + |
| " /**\n" + |
| " * Similar to getAll(Collection, Class, Getter, Class, Collection), but all\n" + |
| " * target objects are returned, regardless of type, including nulls.\n" + |
| " * @param group Temp input group of shared exposed objects. If null, returns\n" + |
| " * empty.\n" + |
| " * @param sourceType Desired source object type. Never null.\n" + |
| " * @param getter Gets a target object from a source object. Never null.\n" + |
| " * @param retVal Temp output group of shared exposed target objects. Never\n" + |
| " * null.\n" + |
| " * @return Reference to retVal. Never null.\n" + |
| " */\n" + |
| " public static <S,T,R extends Collection<? super T>> R getAll(\n" + |
| " Collection<?> group, Class<? extends S> sourceType, Getter<S,T> getter,\n" + |
| " R retVal) {\n" + |
| " if (sourceType == null) throw new IllegalArgumentException(\n" + |
| " \"Source type is null.\");\n" + |
| " if (getter == null) throw new IllegalArgumentException(\n" + |
| " \"Getter is null.\");\n" + |
| " if (retVal == null) throw new IllegalArgumentException(\n" + |
| " \"Return value is null.\");\n" + |
| " retVal.clear();\n" + |
| "\n" + |
| " if (group == null) return retVal;\n" + |
| "\n" + |
| " for (Object obj : group) {\n" + |
| " if (!sourceType.isInstance(obj)) continue; // ignore\n" + |
| " S source = (S) obj;\n" + |
| " T target = getter.getFrom(source);\n" + |
| " retVal.add(target);\n" + |
| " }\n" + |
| "\n" + |
| " return retVal;\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "----------\n" + |
| "1. WARNING in TypeUtils.java (at line 441)\n" + |
| " public static <T extends Class<?>> T getFirstAssignableTo(\n" + |
| " ^^^^^\n" + |
| "The type parameter T should not be bounded by the final type Class<?>. Final types cannot be further extended\n" + |
| "----------\n" + |
| "2. ERROR in TypeUtils.java (at line 444)\n" + |
| " if (type.isInstance(target)) return target;\n" + |
| " ^^^^^^\n" + |
| "Type mismatch: cannot convert from Object to T\n" + |
| "----------\n" + |
| "3. WARNING in TypeUtils.java (at line 458)\n" + |
| " public static Object getFirstIdenticalTo(Collection targets, Class type) {\n" + |
| " ^^^^^^^^^^\n" + |
| "Collection is a raw type. References to generic type Collection<E> should be parameterized\n" + |
| "----------\n" + |
| "4. WARNING in TypeUtils.java (at line 458)\n" + |
| " public static Object getFirstIdenticalTo(Collection targets, Class type) {\n" + |
| " ^^^^^\n" + |
| "Class is a raw type. References to generic type Class<T> should be parameterized\n" + |
| "----------\n" + |
| "5. WARNING in TypeUtils.java (at line 459)\n" + |
| " Iterator targetI = targets.iterator();\n" + |
| " ^^^^^^^^\n" + |
| "Iterator is a raw type. References to generic type Iterator<E> should be parameterized\n" + |
| "----------\n" + |
| "6. ERROR in TypeUtils.java (at line 483)\n" + |
| " Collection<?> group, Class<? extends S> sourceType, Getter<S,T> getter,\n" + |
| " ^^^^^^\n" + |
| "Getter cannot be resolved to a type\n" + |
| "----------\n" + |
| "7. WARNING in TypeUtils.java (at line 499)\n" + |
| " S source = (S) obj;\n" + |
| " ^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to S\n" + |
| "----------\n" + |
| "8. WARNING in TypeUtils.java (at line 502)\n" + |
| " retVal.add((TT) target);\n" + |
| " ^^^^^^^^^^^\n" + |
| "Type safety: Unchecked cast from T to TT\n" + |
| "----------\n" + |
| "9. ERROR in TypeUtils.java (at line 520)\n" + |
| " Collection<?> group, Class<? extends S> sourceType, Getter<S,T> getter,\n" + |
| " ^^^^^^\n" + |
| "Getter cannot be resolved to a type\n" + |
| "----------\n" + |
| "10. WARNING in TypeUtils.java (at line 534)\n" + |
| " S source = (S) obj;\n" + |
| " ^^^^^^^\n" + |
| "Type safety: Unchecked cast from Object to S\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=250297 |
| public void test092() { |
| this.runNegativeTest( |
| new String[] { |
| "p1/p2/X.java", // ================= |
| "package p1.p2;\n" + |
| "public class X {\n" + |
| " public p2.p3.Z z() {return null;}\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in p1\\p2\\X.java (at line 3)\n" + |
| " public p2.p3.Z z() {return null;}\n" + |
| " ^^\n" + |
| "p2 cannot be resolved to a type\n" + |
| "----------\n", |
| null, |
| false, |
| null, |
| true, |
| false, |
| false |
| ); |
| this.runConformTest( |
| new String[] { |
| "a/b/A.java", // ================= |
| "package a.b;\n" + |
| "public class A {\n" + |
| " p1.p2.X x;\n" + |
| " void test() { x.z(); }\n" + |
| " void foo(p2.p3.Z z) {}\n" + |
| "}\n", |
| "p2/p3/Z.java", // ================= |
| "package p2.p3;\n" + |
| "public class Z {}\n" |
| }, |
| "", |
| null, |
| false, |
| null |
| ); |
| this.runConformTest( |
| new String[] { |
| "a/b/A.java", // ================= |
| "package a.b;\n" + |
| "public class A {\n" + |
| " p1.p2.X x;\n" + |
| " void test() { x.z(); }\n" + |
| " void foo(p2.p3.Z z) {}\n" + |
| "}\n" |
| }, |
| "", |
| null, |
| false, |
| null |
| ); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=250297 - variation |
| public void test093() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "X.java", // ================= |
| "import java.util.List;\n" + |
| "\n" + |
| "public class X {\n" + |
| " void foo() {\n" + |
| " List<? extends Zork> zlist = null;\n" + |
| " bar(zlist.get(0));\n" + |
| " }\n" + |
| " <T> T bar(T t) { return t; }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " List<? extends Zork> zlist = null;\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=250297 - variation |
| public void test094() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "X.java", // ================= |
| "import java.util.List;\n" + |
| "\n" + |
| "public class X {\n" + |
| " void foo(boolean b, Runnable r) {\n" + |
| " bar(r);\n" + |
| " }\n" + |
| " <T> T bar(Zork z) { return z; }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " bar(r);\n" + |
| " ^^^\n" + |
| "The method bar(Zork) from the type X refers to the missing type Zork\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 7)\n" + |
| " <T> T bar(Zork z) { return z; }\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=250297 - variation |
| public void test095() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "X.java", // ================= |
| "import java.util.List;\n" + |
| "\n" + |
| "public class X {\n" + |
| " void foo(boolean b, Runnable r) {\n" + |
| " bar(r);\n" + |
| " }\n" + |
| " <T> bar(Zork z) { return z; }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " bar(r);\n" + |
| " ^^^\n" + |
| "The method bar(Runnable) is undefined for the type X\n" + |
| "----------\n" + |
| "2. ERROR in X.java (at line 7)\n" + |
| " <T> bar(Zork z) { return z; }\n" + |
| " ^^^^^^^^^^^\n" + |
| "Return type for the method is missing\n" + |
| "----------\n" + |
| "3. ERROR in X.java (at line 7)\n" + |
| " <T> bar(Zork z) { return z; }\n" + |
| " ^^^^\n" + |
| "Zork cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=257384 |
| public void test096() { |
| this.runNegativeTest( |
| new String[] { |
| "p2/B.java", // ================= |
| "package p2;\n" + |
| "import p1.A;\n" + |
| "public abstract class B {\n" + |
| " public static A foo() {}\n" + |
| "}\n", |
| "p3/C.java", // ================= |
| "package p3;\n" + |
| "import p1.A;\n" + |
| "public abstract class C extends p2.B {\n" + |
| " public static A foo() {}\n" + |
| "}\n", |
| "p/D.java", // ================= |
| "package p;\n" + |
| "public class D extends p3.C {}" |
| }, |
| "----------\n" + |
| "1. ERROR in p2\\B.java (at line 2)\n" + |
| " import p1.A;\n" + |
| " ^^\n" + |
| "The import p1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in p2\\B.java (at line 4)\n" + |
| " public static A foo() {}\n" + |
| " ^\n" + |
| "A cannot be resolved to a type\n" + |
| "----------\n" + |
| "----------\n" + |
| "1. ERROR in p3\\C.java (at line 2)\n" + |
| " import p1.A;\n" + |
| " ^^\n" + |
| "The import p1 cannot be resolved\n" + |
| "----------\n" + |
| "2. ERROR in p3\\C.java (at line 4)\n" + |
| " public static A foo() {}\n" + |
| " ^\n" + |
| "A cannot be resolved to a type\n" + |
| "----------\n" |
| ); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=258248 |
| public void test097() { |
| if (this.complianceLevel <= ClassFileConstants.JDK1_4) return; |
| this.runNegativeTest( |
| new String[] { |
| "X.java", // ================= |
| "public class X {\n" + |
| "\n" + |
| " public static interface InnerInterface<TheTypeMirror, TheDeclaredType extends TheTypeMirror, TheClassType extends TheDeclaredType, TheInterfaceType extends TheDeclaredType, ThePrimitiveType extends TheTypeMirror, TheArrayType extends TheTypeMirror, TheTypeVariable extends TheTypeMirror, TheWildcardType extends TheTypeMirror, TheFieldDeclaration, TheTypeParameterDeclaration, TheTypeDeclaration, TheClassDeclaration extends TheTypeDeclaration> {\n" + |
| " }\n" + |
| " protected <TheTypeMirror, TheDeclaredType extends TheTypeMirror, TheClassType extends TheDeclaredType, TheInterfaceType extends TheDeclaredType, ThePrimitiveType extends TheTypeMirror, TheArrayType extends TheTypeMirror, TheTypeVariable extends TheTypeMirror, TheWildcardType extends TheTypeMirror, TheFieldDeclaration, TheTypeParameterDeclaration, TheTypeDeclaration, TheClassDeclaration extends TheTypeDeclaration, Env extends InnerInterface<TheTypeMirror, TheDeclaredType, TheClassType, TheInterfaceType, ThePrimitiveType, TheArrayType, TheTypeVariable, TheWildcardType, TheFieldDeclaration, TheTypeParameterDeclaration, TheTypeDeclaration, TheClassDeclaration>, ParamType extends TheTypeMirror> void testMethod(\n" + |
| " TheFieldDeclaratation fieldDeclaratation, Env\n" + |
| " environment) {\n" + |
| "\n" + |
| " }\n" + |
| "}\n" |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 6)\n" + |
| " TheFieldDeclaratation fieldDeclaratation, Env\n" + |
| " ^^^^^^^^^^^^^^^^^^^^^\n" + |
| "TheFieldDeclaratation cannot be resolved to a type\n" + |
| "----------\n"); |
| } |
| } |