<div dir="ltr"><div></div><div>Two examples attached. This compiles: " new LPHANDLER_FUNCTION_EX();" whereas "new IUnknownVtbl().new QueryInterface();" does not because the
IUnknownVtbl constructor is generated.<br></div><div><br></div><div></div><div>
<div>
Note that a compiler warning is only issued
because after I
generate 5 packages with jextract, I build them with a module-info.java <br></div>
</div><div><br></div><div>/**<br> * Module definition for JEXTRACT based generated code<br> */<br>module jextract.duncan.win<br>{<br> // =======================================================================<br> // Exports:<br> exports duncan.win.advapi;<br> exports duncan.win.kernel;<br> exports duncan.win.ole;<br> exports duncan.win.shell;<br> exports duncan.win.user;<br><br> // =======================================================================<br>}</div><div><br></div><div>Kind regards</div><div><br></div><div>Duncan<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 15 Feb 2024 at 13:38, Maurizio Cimadamore <<a href="mailto:maurizio.cimadamore@oracle.com">maurizio.cimadamore@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
<p>Can you please send one of the source file that is generating
these warnings?</p>
<p>Thanks<br>
Maurizio<br>
</p>
<div>On 15/02/2024 12:23, Duncan Gittins
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>These are trivial issues I noted when re-building with
latest jextract master (am now using LLVM13).</div>
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div> [javac]
C:\mymoduleproject\generated\some\package\name\IUnknownVtbl.java:48:
warning: [missing-explicit-ctor] class
IUnknownVtbl.QueryInterface in exported package <a href="http://some.package.name" target="_blank">some.package.name</a>
declares no explicit constructors, thereby exposing a default
constructor to clients of module mymoduleproject<br>
[javac] public class QueryInterface {</div>
<br>
<div>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.<br>
</div>
<div><br>
</div>
<div>Headers used: #include <objbase.h> + #include
<shlobj_core.h><br>
</div>
<div><br>
</div>
<div>Kind regards</div>
<div><br>
</div>
<div>Duncan<br>
</div>
</div>
</blockquote>
</div>
</blockquote></div>