javac fails to detect non-canonical imports if the actual and expected symbols have the same simple name.
=== T.java
import p1.A.I; // non-canonical import; should be p2.A.I
class T {
I i;
}
=== p1/A.java
package p1;
public class A extends p2.A {}
=== p2/A.java
package p2;
public class A {
public static class I {}
}
===
$ javac p1/A.java p2/A.java && jar cvf lib.jar p1/*.class p2/*.class
$ javac -fullversion -cp lib.jar -sourcepath : T.java
javac full version "9+181"
... OK
=== T.java
import p1.A.I; // non-canonical import; should be p2.A.I
class T {
I i;
}
=== p1/A.java
package p1;
public class A extends p2.A {}
=== p2/A.java
package p2;
public class A {
public static class I {}
}
===
$ javac p1/A.java p2/A.java && jar cvf lib.jar p1/*.class p2/*.class
$ javac -fullversion -cp lib.jar -sourcepath : T.java
javac full version "9+181"
... OK
- relates to
-
JDK-8201251 The tests for JDK-8187247 should be under test/langtools
-
- Resolved
-