Uploaded image for project: 'Code Tools'
  1. Code Tools
  2. CODETOOLS-7903673

Jextract throws NPE when generating enum constant javadoc

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • None
    • None
    • tools
    • None

      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.

            mcimadamore Maurizio Cimadamore
            mcimadamore Maurizio Cimadamore
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: