Trivial compiler warning from generated code
Duncan Gittins
duncan.gittins at gmail.com
Thu Feb 15 14:31:00 UTC 2024
Two examples attached. This compiles: " new LPHANDLER_FUNCTION_EX();"
whereas "new IUnknownVtbl().new QueryInterface();" does not because the
IUnknownVtbl constructor is generated.
Note that a compiler warning is only issued because after I generate 5
packages with jextract, I build them with a module-info.java
/**
* Module definition for JEXTRACT based generated code
*/
module jextract.duncan.win
{
//
=======================================================================
// Exports:
exports duncan.win.advapi;
exports duncan.win.kernel;
exports duncan.win.ole;
exports duncan.win.shell;
exports duncan.win.user;
//
=======================================================================
}
Kind regards
Duncan
On Thu, 15 Feb 2024 at 13:38, Maurizio Cimadamore <
maurizio.cimadamore at oracle.com> wrote:
> Can you please send one of the source file that is generating these
> warnings?
>
> Thanks
> Maurizio
> On 15/02/2024 12:23, Duncan Gittins wrote:
>
> These are trivial issues I noted when re-building with latest jextract
> master (am now using LLVM13).
>
> I put all my generated code into a module definition which exports each
> package generated by jextract. The compiler warns that there are no
> explicit contructors for each interface class type, such as the inner or
> top level interface handlers such as IUnknownVtbl.QueryInterface and
> LPHANDLER_FUNCTION_EX:
>
> [javac]
> C:\mymoduleproject\generated\some\package\name\IUnknownVtbl.java:48:
> warning: [missing-explicit-ctor] class IUnknownVtbl.QueryInterface in
> exported package some.package.name declares no explicit constructors,
> thereby exposing a default constructor to clients of module mymoduleproject
> [javac] public class QueryInterface {
>
> Also, shouldn't the inner classes for interfaces - like
> IUnknownVtbl.QueryInterface - be declared as static? I assume that means
> the code generated could be a tiny amount smaller as no implicit
> parent$this.
>
> Headers used: #include <objbase.h> + #include <shlobj_core.h>
>
> Kind regards
>
> Duncan
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jextract-dev/attachments/20240215/f6e6fd42/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: IUnknownVtbl.java
Type: application/octet-stream
Size: 11719 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/jextract-dev/attachments/20240215/f6e6fd42/IUnknownVtbl-0001.java>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: LPHANDLER_FUNCTION_EX.java
Type: application/octet-stream
Size: 2122 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/jextract-dev/attachments/20240215/f6e6fd42/LPHANDLER_FUNCTION_EX-0001.java>
More information about the jextract-dev
mailing list