<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <div class="markdown-here-wrapper" data-md-url="" style="">
      <p style="margin: 0px 0px 1.2em !important;">On 11/06/2024 13:37,
        Stephan Herrmann wrote:</p>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite" cite="mid:a71c0c09-7358-4c0f-9745-e5b19ae84957@berlin.de">Am
          10.06.24 um 19:10 schrieb Maurizio Cimadamore:
          <br>
          <blockquote type="cite">On 10/06/2024 17:32, Archie Cobbs
            wrote:
            <br>
            <br>
            <blockquote type="cite">On Mon, Jun 10, 2024 at 4:24 AM
              Maurizio Cimadamore [...]
              <br>
                  Historically, the JLS used to treat this/super calls
              as a static context
              <br>
                  (8.8.7.1).
              <br>
              <br>
              <br>
              That's what the JLS said, but of course that's not what
              the compiler ever implemented (JDK-8301649).
              <br>
            </blockquote>
            <br>
            Sure. What about ecj? What did that compiler implement?
            (This is more a question for Stephan).
            <br>
          </blockquote>
          <br>
          A quick sample shows that flags insideConstructorCall and
          insideStaticContext differ only in what exact error message
          ecj gives. So, generally ecj does implement that rule.
          Relevant code sections go back to some time around 2003. I see
          no reason to consider that rule as a failure.
          <br>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <p style="margin: 0px 0px 1.2em !important;">So, to be clear, the
        Eclipse compiler rejects stuff like the one we’ve been
        discussing - e.g.</p>
      <pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code class="hljs language-java" style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248); -moz-text-size-adjust: none;"><span class="hljs-class"><span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">class</span> <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;color: rgb(68, 85, 136); font-weight: bold;">Outer</span>
    <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;color: rgb(68, 85, 136); font-weight: bold;">int</span> <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;color: rgb(68, 85, 136); font-weight: bold;">x</span></span>;
    <span class="hljs-class"><span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">class</span> <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;color: rgb(68, 85, 136); font-weight: bold;">Inner</span> <span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">extends</span> <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;color: rgb(68, 85, 136); font-weight: bold;">Foo</span> </span>{
        Inner() {
            <span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">super</span>(<span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">new</span> Bar() {

                { Outer.<span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">this</span>.x++; }   <span class="hljs-comment" style="color: rgb(153, 153, 136); font-style: italic;">// allowed???</span>

            });

        }

    }
}
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">Correct?</p>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite" cite="mid:a71c0c09-7358-4c0f-9745-e5b19ae84957@berlin.de">
          <br>
          <br>
          <blockquote type="cite">What I’m trying to say is that
            “because javac does it” is not always a good reason for
            doing something.
            <br>
          </blockquote>
          <br>
          I couldn't agree more :)
          <br>
          <br>
          <br>
          Am 10.06.24 um 11:24 schrieb Maurizio Cimadamore:
          <br>
          > So, for this particular JEP, I think there's a choice in
          front of us:
          <br>
          >
          <br>
          > * do we keep JLS as is (and fix javac to do what the spec
          has always said the
          <br>
          > behavior was) ?
          <br>
          > * or, do we keep javac as is and then tweak the JLS to
          model what the
          <br>
          > implemented behavior is?
          <br>
          <br>
          Which state of JLS are you referring to? Current stable
          version? Version as of JEP 447, latest draft for JEP 482? If
          stable version, how should early-construction context be
          integrated in your opinion?
          <br>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <p style="margin: 0px 0px 1.2em !important;">I’m referring to JEP
        482.</p>
      <p style="margin: 0px 0px 1.2em !important;">Maurizio</p>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite" cite="mid:a71c0c09-7358-4c0f-9745-e5b19ae84957@berlin.de">
          <br>
          regards,
          <br>
          Stephan
          <br>
          <br>
          <br>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <div title="MDH:PHA+PGJyPjwvcD48ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDExLzA2LzIwMjQgMTM6
MzcsIFN0ZXBoYW4gSGVycm1hbm4gd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNp
dGUiIGNpdGU9Im1pZDphNzFjMGMwOS03MzU4LTRjMGYtOTc0NS1lNWIxOWFlODQ5NTdAYmVybGlu
LmRlIj5BbSAxMC4wNi4yNCB1bSAxOToxMCBzY2hyaWViIE1hdXJpemlvIENpbWFkYW1vcmU6Cjxi
cj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5PbiAxMC8wNi8yMDI0IDE3OjMyLCBBcmNoaWUgQ29i
YnMgd3JvdGU6Cjxicj4KPGJyPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPk9uIE1vbiwgSnVuIDEw
LCAyMDI0IGF0IDQ6MjTigK9BTSBNYXVyaXppbyBDaW1hZGFtb3JlIApbLi4uXQo8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7IEhpc3RvcmljYWxseSwgdGhlIEpMUyB1c2VkIHRvIHRyZWF0IHRoaXMvc3Vw
ZXIgY2FsbHMgYXMgYSBzdGF0aWMgY29udGV4dAo8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICg4Ljgu
Ny4xKS4KPGJyPgo8YnI+Cjxicj5UaGF0J3Mgd2hhdCB0aGUgSkxTIHNhaWQsIGJ1dCBvZiBjb3Vy
c2UgdGhhdCdzIG5vdCB3aGF0IHRoZSBjb21waWxlciBldmVyIAppbXBsZW1lbnRlZCAoSkRLLTgz
MDE2NDkpLgo8YnI+PC9ibG9ja3F1b3RlPgo8YnI+U3VyZS4gV2hhdCBhYm91dCBlY2o/IFdoYXQg
ZGlkIHRoYXQgY29tcGlsZXIgaW1wbGVtZW50PyAoVGhpcyBpcyBtb3JlIGEgcXVlc3Rpb24gCmZv
ciBTdGVwaGFuKS4KPGJyPjwvYmxvY2txdW90ZT4KPGJyPkEgcXVpY2sgc2FtcGxlIHNob3dzIHRo
YXQgZmxhZ3MgaW5zaWRlQ29uc3RydWN0b3JDYWxsIGFuZCBpbnNpZGVTdGF0aWNDb250ZXh0IApk
aWZmZXIgb25seSBpbiB3aGF0IGV4YWN0IGVycm9yIG1lc3NhZ2UgZWNqIGdpdmVzLiBTbywgZ2Vu
ZXJhbGx5IGVjaiBkb2VzIAppbXBsZW1lbnQgdGhhdCBydWxlLiBSZWxldmFudCBjb2RlIHNlY3Rp
b25zIGdvIGJhY2sgdG8gc29tZSB0aW1lIGFyb3VuZCAyMDAzLiBJIApzZWUgbm8gcmVhc29uIHRv
IGNvbnNpZGVyIHRoYXQgcnVsZSBhcyBhIGZhaWx1cmUuCjxicj48L2Jsb2NrcXVvdGU+U28sIHRv
IGJlIGNsZWFyLCB0aGUgRWNsaXBzZSBjb21waWxlciByZWplY3RzIHN0dWZmIGxpa2UgdGhlIG9u
ZSB3ZSd2ZSBiZWVuIGRpc2N1c3NpbmcgLSBlLmcuPGJyPjxicj5gYGBqYXZhPGJyPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPmNsYXNzIE91dGVyPC9zcGFuPjxkaXYgc3R5bGU9
Im1hcmdpbi1sZWZ0OjQwcHgiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPiZu
YnNwOyAmbmJzcDsgaW50IHg7PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjQw
cHgiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPiZuYnNwOyZuYnNwOyZuYnNw
OyBjbGFzcyBJbm5lciBleHRlbmRzIEZvbyB7PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp
bi1sZWZ0OjQwcHgiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBJbm5lcigpIHs8L3NwYW4+PC9kaXY+
PGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6NDBweCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1v
bm9zcGFjZSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7IHN1cGVyKG5ldyBCYXIoKSB7PGJyPjwvc3Bhbj48L2Rpdj48ZGl2
IHN0eWxlPSJtYXJnaW4tbGVmdDo0MHB4Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3Nw
YWNlIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgeyBPdXRlci50aGlzLngrKzsg
fSAmbmJzcDsgLy8gYWxsb3dlZD8/Pzxicj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
LWxlZnQ6NDBweCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
IH0pOzxicj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6NDBweCI+PGRpdj48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsgfTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn
aW4tbGVmdDo0MHB4Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj4mbmJzcDsm
bmJzcDsmbmJzcDsgfTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDo0MHB4Ij48
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj59PC9zcGFuPjwvZGl2Pjxicj48cD5g
YGA8L3A+PHA+Q29ycmVjdD88YnI+PC9wPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIGNpdGU9Im1p
ZDphNzFjMGMwOS03MzU4LTRjMGYtOTc0NS1lNWIxOWFlODQ5NTdAYmVybGluLmRlIj4KPGJyPgo8
YnI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+V2hhdCBJ4oCZbSB0cnlpbmcgdG8gc2F5IGlzIHRo
YXQg4oCcYmVjYXVzZSBqYXZhYyBkb2VzIGl04oCdIGlzIG5vdCBhbHdheXMgYSBnb29kIApyZWFz
b24gZm9yIGRvaW5nIHNvbWV0aGluZy4KPGJyPjwvYmxvY2txdW90ZT4KPGJyPkkgY291bGRuJ3Qg
YWdyZWUgbW9yZSA6KQo8YnI+Cjxicj4KPGJyPkFtIDEwLjA2LjI0IHVtIDExOjI0IHNjaHJpZWIg
TWF1cml6aW8gQ2ltYWRhbW9yZToKPGJyPiZndDsgU28sIGZvciB0aGlzIHBhcnRpY3VsYXIgSkVQ
LCBJIHRoaW5rIHRoZXJlJ3MgYSBjaG9pY2UgaW4gZnJvbnQgb2YgdXM6Cjxicj4mZ3Q7Cjxicj4m
Z3Q7ICogZG8gd2Uga2VlcCBKTFMgYXMgaXMgKGFuZCBmaXggamF2YWMgdG8gZG8gd2hhdCB0aGUg
c3BlYyBoYXMgYWx3YXlzIHNhaWQgdGhlCjxicj4mZ3Q7IGJlaGF2aW9yIHdhcykgPwo8YnI+Jmd0
OyAqIG9yLCBkbyB3ZSBrZWVwIGphdmFjIGFzIGlzIGFuZCB0aGVuIHR3ZWFrIHRoZSBKTFMgdG8g
bW9kZWwgd2hhdCB0aGUKPGJyPiZndDsgaW1wbGVtZW50ZWQgYmVoYXZpb3IgaXM/Cjxicj4KPGJy
PldoaWNoIHN0YXRlIG9mIEpMUyBhcmUgeW91IHJlZmVycmluZyB0bz8gQ3VycmVudCBzdGFibGUg
dmVyc2lvbj8gVmVyc2lvbiBhcyBvZiAKSkVQIDQ0NywgbGF0ZXN0IGRyYWZ0IGZvciBKRVAgNDgy
PyBJZiBzdGFibGUgdmVyc2lvbiwgaG93IHNob3VsZCAKZWFybHktY29uc3RydWN0aW9uIGNvbnRl
eHQgYmUgaW50ZWdyYXRlZCBpbiB5b3VyIG9waW5pb24/Cjxicj48L2Jsb2NrcXVvdGU+PHA+SSdt
IHJlZmVycmluZyB0byBKRVAgNDgyLjwvcD48cD5NYXVyaXppbzxicj48L3A+PGJsb2NrcXVvdGUg
dHlwZT0iY2l0ZSIgY2l0ZT0ibWlkOmE3MWMwYzA5LTczNTgtNGMwZi05NzQ1LWU1YjE5YWU4NDk1
N0BiZXJsaW4uZGUiPgo8YnI+cmVnYXJkcywKPGJyPlN0ZXBoYW4KPGJyPgo8YnI+Cjxicj48L2Js
b2NrcXVvdGU+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">​</div>
    </div>
  </body>
</html>