Details
-
Bug
-
Resolution: Fixed
-
P2
-
9-repo-jigsaw
Description
Compiler throw ClassCastException if in module-info file there is provides statement with nested static class as service implementation.
Message:
An exception has occurred in the compiler (9-ea). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you. java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol (in module: jdk.compiler) cannot be cast to com.sun.tools.javac.code.Symbol$PackageSymbol (in module: jdk.compiler) at com.sun.tools.javac.comp.Modules$UsesProvidesVisitor.checkForCorrectness(jdk.compiler@9-ea/Modules.java:689) at com.sun.tools.javac.comp.Modules.lambda$getUsesProvidesCompleter$1(jdk.compiler@9-ea/Modules.java:579) at com.sun.tools.javac.code.Symbol$ModuleSymbol.completeUsesProvides(jdk.compiler@9-ea/Symbol.java:939) at com.sun.tools.javac.comp.Attr.visitModuleDef(jdk.compiler@9-ea/Attr.java:4401) at com.sun.tools.javac.tree.JCTree$JCModuleDecl.accept(jdk.compiler@9-ea/JCTree.java:2627) at com.sun.tools.javac.comp.Attr$ResultInfo.attr(jdk.compiler@9-ea/Attr.java:504) at com.sun.tools.javac.comp.Attr.attribTree(jdk.compiler@9-ea/Attr.java:642) at com.sun.tools.javac.comp.Attr.attribStat(jdk.compiler@9-ea/Attr.java:711) at com.sun.tools.javac.comp.Attr.attribModule(jdk.compiler@9-ea/Attr.java:4299) at com.sun.tools.javac.comp.Attr.attribModule(jdk.compiler@9-ea/Attr.java:4289) at com.sun.tools.javac.comp.Attr.attrib(jdk.compiler@9-ea/Attr.java:4263) at com.sun.tools.javac.main.JavaCompiler.attribute(jdk.compiler@9-ea/JavaCompiler.java:1330) at com.sun.tools.javac.main.JavaCompiler.compile(jdk.compiler@9-ea/JavaCompiler.java:958) at com.sun.tools.javac.main.Main.compile(jdk.compiler@9-ea/Main.java:261) at com.sun.tools.javac.main.Main.compile(jdk.compiler@9-ea/Main.java:143) at com.sun.tools.javac.Main.compile(jdk.compiler@9-ea/Main.java:55) at com.sun.tools.javac.Main.main(jdk.compiler@9-ea/Main.java:41)
-----------------------
Minimal case:
Directory layout:
mod1/module-info.java
mod1/pack1/Outer.java
mod1/pack1/Inter.java
Code:
mod1/module-info.java:
module mod1 {
provides pack1.Inter with pack1.Outer.A;
}
mod1/pack1/Inter.java:
package pack1;
public interface Inter {
}
mod1/pack1/Outer.java:
package pack1;
public class Outer {
public static class A implements pack1.Inter {}
}
Message:
An exception has occurred in the compiler (9-ea). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you. java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol (in module: jdk.compiler) cannot be cast to com.sun.tools.javac.code.Symbol$PackageSymbol (in module: jdk.compiler) at com.sun.tools.javac.comp.Modules$UsesProvidesVisitor.checkForCorrectness(jdk.compiler@9-ea/Modules.java:689) at com.sun.tools.javac.comp.Modules.lambda$getUsesProvidesCompleter$1(jdk.compiler@9-ea/Modules.java:579) at com.sun.tools.javac.code.Symbol$ModuleSymbol.completeUsesProvides(jdk.compiler@9-ea/Symbol.java:939) at com.sun.tools.javac.comp.Attr.visitModuleDef(jdk.compiler@9-ea/Attr.java:4401) at com.sun.tools.javac.tree.JCTree$JCModuleDecl.accept(jdk.compiler@9-ea/JCTree.java:2627) at com.sun.tools.javac.comp.Attr$ResultInfo.attr(jdk.compiler@9-ea/Attr.java:504) at com.sun.tools.javac.comp.Attr.attribTree(jdk.compiler@9-ea/Attr.java:642) at com.sun.tools.javac.comp.Attr.attribStat(jdk.compiler@9-ea/Attr.java:711) at com.sun.tools.javac.comp.Attr.attribModule(jdk.compiler@9-ea/Attr.java:4299) at com.sun.tools.javac.comp.Attr.attribModule(jdk.compiler@9-ea/Attr.java:4289) at com.sun.tools.javac.comp.Attr.attrib(jdk.compiler@9-ea/Attr.java:4263) at com.sun.tools.javac.main.JavaCompiler.attribute(jdk.compiler@9-ea/JavaCompiler.java:1330) at com.sun.tools.javac.main.JavaCompiler.compile(jdk.compiler@9-ea/JavaCompiler.java:958) at com.sun.tools.javac.main.Main.compile(jdk.compiler@9-ea/Main.java:261) at com.sun.tools.javac.main.Main.compile(jdk.compiler@9-ea/Main.java:143) at com.sun.tools.javac.Main.compile(jdk.compiler@9-ea/Main.java:55) at com.sun.tools.javac.Main.main(jdk.compiler@9-ea/Main.java:41)
-----------------------
Minimal case:
Directory layout:
mod1/module-info.java
mod1/pack1/Outer.java
mod1/pack1/Inter.java
Code:
mod1/module-info.java:
module mod1 {
provides pack1.Inter with pack1.Outer.A;
}
mod1/pack1/Inter.java:
package pack1;
public interface Inter {
}
mod1/pack1/Outer.java:
package pack1;
public class Outer {
public static class A implements pack1.Inter {}
}