[foreign-jextract] RFR: Represent typedef with Declaration.Variable instead of Declaration.Scoped
Henry Jen
henryjen at openjdk.java.net
Thu Apr 30 06:34:36 UTC 2020
Currently jextract API only present typedef declaration for record types, and using Declaration.Scoped to do so.
This makes downstream tools like jextract impossible to generate more comprehensive type. For example, if the tool
would like to create a carrier type for size_t with similar name, because we pass through that, this is impossible.
This patch try to present typedef as Declaration.Variable with Kind TYPE. This will give us more transparency on
dealing with typedef, and enable factoring an Declaration.Variable.TYPE from a Type.Delegated.TYPEDEF.
This would also be useful when a tool collecting type dependencies and encounter anonymous type or types without
declaration, this gave the tool a chance to inject an implicit typedef to associate a type with a proper name.
There is one thing worth further discussion is that if we would like to consider generate array with typedef, currently
the array element type won't be a Type.Delegated.TYPEDEF, but canonical type. The test case try to explain what should
be expected for most use cases, if there is any possible way to use typedef, I'll try to add them.
-------------
Commit messages:
- Represent typedef with Declaration.Variable instead of Declaration.Scoped
Changes: https://git.openjdk.java.net/panama-foreign/pull/137/files
Webrev: https://webrevs.openjdk.java.net/panama-foreign/137/webrev.00
Stats: 769 lines in 10 files changed: 732 ins; 12 del; 25 mod
Patch: https://git.openjdk.java.net/panama-foreign/pull/137.diff
Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/137/head:pull/137
PR: https://git.openjdk.java.net/panama-foreign/pull/137
More information about the panama-dev
mailing list