Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: X10 2.1.2
-
Fix Version/s: X10 2.2
-
Component/s: Native X10: Compiler Codegen
-
Labels:None
-
Number of attachments :
Description
Given an empty class:
class A {
}
the x10c++ compiler with the options below throws an NPE, but still generates code. In X10DT, we get ill-formed generated files that fail post-compilation.
The option that seems to be the problem is -MAIN_CLASS="". Without this option everything works fine. But this is something that is needed for X10DT.
Exception in thread "main" java.lang.NullPointerException
at x10.types.X10SourceClassResolver.find(X10SourceClassResolver.java:153)
at polyglot.types.MemberClassResolver.find(MemberClassResolver.java:76)
at polyglot.types.CachingResolver.find(CachingResolver.java:117)
at polyglot.types.SystemResolver.find(SystemResolver.java:149)
at polyglot.types.TypeSystem_c.forName(TypeSystem_c.java:2072)
at x10cpp.visit.X10CPPTranslator.getMainMethods(X10CPPTranslator.java:645)
at x10cpp.visit.X10CPPTranslator.postCompile(X10CPPTranslator.java:531)
at x10cuda.ExtensionInfo$X10CUDAScheduler$1.invokePostCompiler(ExtensionInfo.java:89)
at polyglot.visit.PostCompiled.runTask(PostCompiled.java:58)
at polyglot.frontend.Scheduler.runPass(Scheduler.java:349)
at x10.ExtensionInfo$X10Scheduler.runPass(ExtensionInfo.java:1138)
at polyglot.frontend.AbstractGoal_c.run(AbstractGoal_c.java:133)
at polyglot.types.LazyRef_c.get(LazyRef_c.java:56)
at polyglot.frontend.AbstractGoal_c.run(AbstractGoal_c.java:75)
at polyglot.types.LazyRef_c.get(LazyRef_c.java:56)
at polyglot.frontend.Scheduler.attempt(Scheduler.java:257)
at polyglot.frontend.Scheduler.runToCompletion(Scheduler.java:193)
at polyglot.frontend.Scheduler.runToCompletion(Scheduler.java:179)
at polyglot.frontend.Compiler.compile(Compiler.java:269)
at polyglot.frontend.Compiler.compileFiles(Compiler.java:229)
at polyglot.main.Main.start(Main.java:135)
at polyglot.main.Main.start(Main.java:76)
at polyglot.main.Main.main(Main.java:185)
OPTIONS:
--------
x10c++ -classpath "/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/src:/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/src1:/Users/mvaziri/Workspaces/X10DTWorkspace/x10.runtime/src-java/gen/x10.jar:" -d "/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/bin" -assert -sourcepath "/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/src1:/Users/mvaziri/Workspaces/X10DTWorkspace/x10.runtime/src-java/gen/x10.jar:/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/src" -commandlineonly -ox java -errors 100 -w 80 -noserial -MAIN_CLASS="" -DEBUG -LOOP_OPTIMIZATIONS -SPLIT_CONSTRUCTORS -INLINE_CONSTANTS -INLINE_METHODS -INLINE_CLOSURES -INLINE_CONSTRUCTORS -ALLOW_STATEMENT_EXPRESSIONS -PLUGINS="" -PLUGIN_COMPILER="" "/Users/mvaziri/Workspaces/DependencyWorkspace/DependencyTestProject/src/pac/pak/A.x10"
This is a C++ backend-specific problem.