<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Related to the earlier discussion on forbidden record members -
      how is this section still relevant?</p>
    <p>"It is a compile-time error for a record declaration to declare a
      record component with the name <code>clone</code>, <code>finalize</code>,
      <code>getClass</code>, <code>hashCode</code>, <code>notify</code>,
      <code>notifyAll</code>, <code>readObjectNoData</code>, <code>readResolve</code>,
      <code>serialPersistentFields</code>, <code>serialVersionUID</code>,
      <code>toString</code>, <code>wait</code>, or <code>writeReplace</code>."</p>
    <div class="moz-cite-prefix">Chris says that the serialization spec
      ignores all the serialization-related methods if they appear
      inside a record; should we lift the restrictions?</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">In the grammar for records, I find it
      odd that we basically say that record members are class members
      plus compact constructor, but then we revert to say that instance
      initializer are not allowed.</div>
    <div class="moz-cite-prefix">I wonder if a more specific production
      for the record body would be useful and more direct here?</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">I note an asymmetry between the rules
      for canonical constructor and compact constructor; in one we say:</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">"Every field corresponding to a record
      component of R must be definitely assigned and moreover not
      definitely unassigned (16.9) at the end of the body of the
      canonical constructor."</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">In the other we say:</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">"It is a compile-time error if at the
      end of the body of the compact constructor, any of the fields
      corresponding to the record components of R are neither definitely
      assigned nor definitely unassigned."</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Moreover, a deeper question: should we
      leave the magic auto-initialization of fields only for the compact
      form? That way, you would have a _new_ linguistic form, with _new_
      properties, whereas old forms (e.g. a constructor with parameters)
      will have same rules as before (can have returns, must initialize
      fields explicitly). I think that, from a pedagogical aspect, that
      would be preferrable.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Maurizio<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 31/10/2019 14:17, Gavin Bierman
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:DB3D4BC9-8F92-423E-AE50-80833F58754C@oracle.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div class="">An updated draft language spec for JEP 359 (Records)
        is available at:</div>
      <div class=""><br class="">
      </div>
      <div class=""><a
href="http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jls.html"
          class="" moz-do-not-send="true">http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jls.html</a></div>
      <div class=""><br class="">
      </div>
      <div class="">(Alongside is a draft JVM spec for this feature:</div>
      <div class=""><br class="">
      </div>
      <div class=""><a
href="http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jvms.html"
          class="" moz-do-not-send="true">http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jvms.html</a></div>
      <div class=""><br class="">
      </div>
      <div class="">)</div>
      <div class=""><br class="">
      </div>
      <div class="">As always, please email me any
        comments/thoughts/bugs.</div>
      <div class=""><br class="">
      </div>
      <div class="">Thanks,</div>
      <div class="">Gavin</div>
      <br class="">
      <div><br class="">
        <blockquote type="cite" class="">
          <div class="">On 23 Aug 2019, at 22:25, Gavin Bierman <<a
              href="mailto:gavin.bierman@oracle.com" class=""
              moz-do-not-send="true">gavin.bierman@oracle.com</a>>
            wrote:</div>
          <br class="Apple-interchange-newline">
          <div class="">
            <meta http-equiv="Content-Type" content="text/html;
              charset=UTF-8" class="">
            <div style="word-wrap: break-word; -webkit-nbsp-mode: space;
              line-break: after-white-space;" class="">A draft language
              spec for records is available at:
              <div class=""><br class="">
              </div>
              <div class=""><a
href="http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html"
                  class="" moz-do-not-send="true">http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html</a></div>
              <div class=""><br class="">
              </div>
              <div class="">This spec doesn’t yet discuss varargs
                records - to appear in the next draft.</div>
              <div class=""><br class="">
              </div>
              <div class="">All comments welcomed!</div>
              <div class=""><br class="">
              </div>
              <div class="">Thanks,</div>
              <div class="">Gavin</div>
            </div>
          </div>
        </blockquote>
      </div>
      <br class="">
    </blockquote>
  </body>
</html>