[foreign-jextract] RFR: 8261642: improve jextract source generation mode and remove class generation [v2]

Jorn Vernee jvernee at openjdk.java.net
Mon Feb 15 15:09:55 UTC 2021


On Mon, 15 Feb 2021 15:03:09 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

>> forgot about this - I cannot really do this, as nested structs don't return a new builder - in other words, the OutputFactory code doesn't really know if it should begin a class or not. I could do `if (newBuilder != currentBuilder) newBuilder.classBegin() ...` but I don't think that improves much?
>
> Yeah, I was looking at `classEnd()` where you use `if (prefixElementNames.isEmpty())` to check if the struct builder is for an anonymous nested struct or not. So I thought you could do the same for `classBegin()` and have:
> 
>     @Override
>     void classBegin() {
>         if (prefixElementNames.isEmpty()) {
>             super.classBegin();
>             addLayout(layoutField(), ((Type.Declared)structType).tree().layout().get())
>                     .emitGetter(this, MEMBER_MODS, Constant.SUFFIX_ONLY);
>         }
>     }
> 
> ?

Also, it might make things clearer by creating an `isAnonymousNested()` predicate for that (just for reader's sake).

-------------

PR: https://git.openjdk.java.net/panama-foreign/pull/450


More information about the panama-dev mailing list