<div dir="ltr">Pulling on a couple of threads to make sure I have the translation strategy for the implicit constructors straight.<div><br></div><div>Given a class like Complex with an implicit constructor:</div><div>```<br>value class Complex {<br>    private int re;<br>    private int im;<br><br>    public implicit Complex();<br>    public Complex(int re, int im) { ... }<br><br>    ...<br>}<br>```<br></div><div>and the JEP 401's ImplicitCreation attribute:</div><div>```</div><div>ImplicitCreation_attribute {<br>    u2 attribute_name_index;<br>    u4 attribute_length;<br>    u2 implicit_creation_flags;<br>}</div><div>```</div><div>The "obvious" translation is to generate an ImplicitCreation attribute if there is an implicit constructor, which seems reasonable.</div><div><br></div><div>The piece I'm looking for clarification on is whether there will also be a `method_info` in the classfile representing the implicit constructor.</div><div><br></div><div>If the implicit constructor has a `method_info` then it will naturally be represented in the same way as the explicit `Complex(int, int)` constructor.  This means both will be found by reflective operations (ie by j.l.Class::getConstructor) without special casing.  Users that expect two constructors will find them in classfile and reflectively.</div><div><br></div><div>Alas representing implicit constructors with a `method_info` is not without costs: primarily specing how the method_info exists and explaining why it doesn't have a code attribute.</div><div><br></div><div>I know this has been mentioned on the EG calls, and I don't recall a final decision or see it in the spec drafts / documents so far.  Was a conclusion reached on how to do the translation?</div><div><br></div><div>--Dan</div></div>