<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Belatedly catching up on review email, although the fix has
      already been reviewed and pushed, I wanted to make a counterpoint
      for future consideration.</p>
    <p>While it is more future proof to have an annotation processor
      return SourceVersion.latest(), doing that can mask actual updates
      that need to be made to support the a newer source level. If a new
      kind of element were added, it is likely a processor would need to
      be updated to maintain its semantics over the expanded set of
      elements now possible.</p>
    <p>Cheers,<br>
    </p>
    <p>-Joe<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 6/25/2018 5:04 PM, Stuart Marks
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:47364090-cd43-8f63-57b4-475fde77ffef@oracle.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <p>Hi Jon,</p>
      <p>Good point. It seems fairly unlikely for jdeprscan to be
        outright broken by a model change, given that jdeprscan uses
        annotation processing for class scanning, not source code
        analysis.</p>
      <p>I've posted an updated webrev here:</p>
      <p>    <a class="moz-txt-link-freetext"
          href="http://cr.openjdk.java.net/%7Esmarks/reviews/8205455/webrev.1/"
          moz-do-not-send="true">http://cr.openjdk.java.net/~smarks/reviews/8205455/webrev.1/</a></p>
      <p>(previous patch posted as webrev.0 for completeness)</p>
      <p>s'marks<br>
      </p>
      <br>
      <div class="moz-cite-prefix">On 6/25/18 3:35 PM, Jonathan Gibbons
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:1309b09f-bbbc-867d-7220-25fbf02ba1ea@oracle.com">
        <meta http-equiv="Content-Type" content="text/html;
          charset=utf-8">
        <p>Stuart,</p>
        <p>This would be more future-proof if you did not use these
          lines:</p>
        <p><br>
          -@SupportedSourceVersion(RELEASE_10) <br>
          +@SupportedSourceVersion(RELEASE_11) </p>
        but instead provided an override definition like this, taken
        from
        test/langtools/tools/javac/lib/JavacTestingAbstractProcessor:<br>
        <pre class="sourcelines stripes4 wrap" style="margin: 0px; font-size: 11.699999809265137px; position: relative; counter-reset: lineno 0; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;"><span id="l50" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;"></span>
<span id="l51" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">    /**</span>
<span id="l52" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">     * Return the latest source version. Unless this method is</span>
<span id="l53" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">     * overridden, an {@code IllegalStateException} will be thrown if a</span>
<span id="l54" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">     * subclass has a {@code SupportedSourceVersion} annotation.</span>
<span id="l55" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">     */</span>
<span id="l56" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">    @Override</span>
<span id="l57" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">    public SourceVersion getSupportedSourceVersion() {</span>
<span id="l58" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">        SupportedSourceVersion ssv = this.getClass().getAnnotation(SupportedSourceVersion.class);</span>
<span id="l59" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">        if (ssv != null)</span>
<span id="l60" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">            throw new IllegalStateException("SupportedSourceVersion annotation not supported here.");</span>
<span id="l61" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);"></span>
<span id="l62" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">        return SourceVersion.latest();</span>
<span id="l63" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">    }</span></pre>
        <br>
        or, more simply
        <pre class="sourcelines stripes4 wrap" style="margin: 0px; font-size: 11.699999809265137px; position: relative; counter-reset: lineno 0; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;"><span id="l55" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);"></span>
<span id="l56" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">    @Override</span>
<span id="l57" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">    public SourceVersion getSupportedSourceVersion() {</span><span id="l61" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);"></span>
<span id="l62" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: white;">        return SourceVersion.latest();</span>
<span id="l63" style="white-space: pre-wrap; display: inline-block; width: 1057px; padding: 1px 0px; counter-increment: lineno 1; background-color: rgb(240, 240, 240);">    }

</span></pre>
        <div class="moz-cite-prefix">On 6/25/18 3:28 PM, Stuart Marks
          wrote:<br>
        </div>
        <blockquote type="cite"
          cite="mid:24e14c63-4b8f-2ce1-d4b9-c24be769e833@oracle.com">Hi
          all, <br>
          <br>
          Please review this small changeset that updates one of
          jdeprscan's annotation processors to RELEASE_11 in order to
          prevent warning messages from being issued. This changeset
          also includes some additional output lines so that the output
          of jdeprscan's TestRelease.java test is more readable. <br>
          <br>
          Patch appended below. <br>
          <br>
          Bug: <br>
          <br>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>