jextract cannot parse enum with '-x c++' clang options

Tornai András tornaiandrasede at gmail.com
Fri Oct 23 14:25:22 UTC 2020


Hello,

I executed jextract against the following .h
enum fruit {apple, banana};

by running
jextract --source -C --verbose -C -x -C c++ pbug2.h

Unfortunately it fails with a StackOverflowError[1]. Without the extra "-C
-x -C c++" clang params it works well. Nevertheless, I think the thing
should work in both cases.

The .h file, the executed commands and the output are attached.

Regards,
András



[1] Exception in thread "main" java.lang.AssertionError:
java.lang.IllegalStateException: java.lang.StackOverflowError
        at
jdk.incubator.jextract/jdk.internal.clang.libclang.Index_h.clang_visitChildren(Index_h.java:4206)
        at
jdk.incubator.jextract/jdk.internal.clang.Cursor$CursorChildren.get(Cursor.java:348)
        at
jdk.incubator.jextract/jdk.internal.clang.Cursor.children(Cursor.java:357)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createScoped(TreeMaker.java:187)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createTreeInternal(TreeMaker.java:88)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createTree(TreeMaker.java:81)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TypeMaker.makeTypeInternal(TypeMaker.java:197)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TypeMaker.makeType(TypeMaker.java:102)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createEnumConstant(TreeMaker.java:179)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createTreeInternal(TreeMaker.java:90)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createTree(TreeMaker.java:81)
        at
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at
java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at
java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at
java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:675)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createScoped(TreeMaker.java:188)
        at
jdk.incubator.jextract/jdk.internal.jextract.impl.TreeMaker.createTreeInternal(TreeMaker.java:88)
...
-------------- next part --------------
enum fruit {apple, banana};
-------------- next part --------------
java --version

jextract --source -C --verbose -C -x -C c++ pbug2.h


More information about the panama-dev mailing list