This exception is issued:
java.lang.NullPointerException: Cannot invoke "org.openjdk.jextract.Declaration$Constant.name()" because "<parameter2>" is null
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.enumConstantString(TreeMaker.java:532)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.lambda$createEnum$7(TreeMaker.java:375)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createEnum(TreeMaker.java:373)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createTreeInternal(TreeMaker.java:133)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createTree(TreeMaker.java:119)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.Parser.lambda$parse$2(Parser.java:86)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.lambda$forEach$1(Cursor.java:261)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren$Context.visit(Cursor.java:234)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.lambda$static$0(Cursor.java:252)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.libclang.Index_h.clang_visitChildren(Index_h.java:8275)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.forEachShortCircuit(Cursor.java:271)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.forEach(Cursor.java:260)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor.forEach(Cursor.java:201)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.Parser.parse(Parser.java:64)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.parse(JextractTool.java:119)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.run(JextractTool.java:516)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.main(JextractTool.java:218)
When extracting some system header files on MacOS. It seems that the problematic declaration is this:
enum __CFByteOrder {
CFByteOrderUnknown,
CFByteOrderLittleEndian,
CFByteOrderBigEndian
};
However, this declaration is pretty basic, and does not cause issues on other platforms. Perhaps this might also indicate a bug in libclang reporting a bogus nested declaration.
java.lang.NullPointerException: Cannot invoke "org.openjdk.jextract.Declaration$Constant.name()" because "<parameter2>" is null
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.enumConstantString(TreeMaker.java:532)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.lambda$createEnum$7(TreeMaker.java:375)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createEnum(TreeMaker.java:373)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createTreeInternal(TreeMaker.java:133)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.TreeMaker.createTree(TreeMaker.java:119)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.Parser.lambda$parse$2(Parser.java:86)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.lambda$forEach$1(Cursor.java:261)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren$Context.visit(Cursor.java:234)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.lambda$static$0(Cursor.java:252)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.libclang.Index_h.clang_visitChildren(Index_h.java:8275)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.forEachShortCircuit(Cursor.java:271)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor$CursorChildren.forEach(Cursor.java:260)
at org.openjdk.jextract@22/org.openjdk.jextract.clang.Cursor.forEach(Cursor.java:201)
at org.openjdk.jextract@22/org.openjdk.jextract.impl.Parser.parse(Parser.java:64)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.parse(JextractTool.java:119)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.run(JextractTool.java:516)
at org.openjdk.jextract@22/org.openjdk.jextract.JextractTool.main(JextractTool.java:218)
When extracting some system header files on MacOS. It seems that the problematic declaration is this:
enum __CFByteOrder {
CFByteOrderUnknown,
CFByteOrderLittleEndian,
CFByteOrderBigEndian
};
However, this declaration is pretty basic, and does not cause issues on other platforms. Perhaps this might also indicate a bug in libclang reporting a bogus nested declaration.
- relates to
-
CODETOOLS-7903674 jextract should ignore non-enum constants inside enum
-
- Resolved
-