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

Missing handling for array fields with inline struct declaration

XMLWordPrintable

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

      Jextract does not handle fields with an array type that contains an inline struct declaration:

          struct Foo {
              struct {
                  int x;
              } nested[1];
          };

      This fails with:

      java.util.NoSuchElementException: No value present
      at java.base/java.util.Optional.get(Optional.java:143)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.DeclarationImpl$JavaName.getFullNameOrThrow(DeclarationImpl.java:392)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.ClassSourceBuilder.layoutString(ClassSourceBuilder.java:197)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.ClassSourceBuilder.layoutString(ClassSourceBuilder.java:201)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.StructBuilder.structOrUnionLayoutString(StructBuilder.java:311)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.StructBuilder.structOrUnionLayoutString(StructBuilder.java:275)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.StructBuilder.emitLayoutDecl(StructBuilder.java:249)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.StructBuilder.begin(StructBuilder.java:83)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.ToplevelBuilder.addStruct(ToplevelBuilder.java:138)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.OutputFactory.visitScoped(OutputFactory.java:99)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.OutputFactory.visitScoped(OutputFactory.java:43)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.DeclarationImpl$ScopedImpl.accept(DeclarationImpl.java:256)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.OutputFactory.generateDecl(OutputFactory.java:71)
      at java.base/java.lang.Iterable.forEach(Iterable.java:75)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.OutputFactory.generate(OutputFactory.java:64)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.OutputFactory.generateWrapped(OutputFactory.java:53)
      at org.openjdk.jextract@21/org.openjdk.jextract.impl.CodeGenerator.generate(CodeGenerator.java:47)
      at org.openjdk.jextract@21/org.openjdk.jextract.JextractTool.generateInternal(JextractTool.java:127)
      at org.openjdk.jextract@21/org.openjdk.jextract.JextractTool.run(JextractTool.java:477)
      at org.openjdk.jextract@21/org.openjdk.jextract.JextractTool.main(JextractTool.java:175)

            mcimadamore Maurizio Cimadamore
            jvernee Jorn Vernee
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: