<!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;">Heh, yes. Look at
this code in Attr::visitNewClass:</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-function"><span class="hljs-keyword" style="color: rgb(51, 51, 51); font-weight: bold;">else</span> <span class="hljs-title" style="color: rgb(153, 0, 0); font-weight: bold;">if</span> <span class="hljs-params">(!clazztype.tsym.isInterface()</span> &&
<span class="hljs-params">(clazztype.tsym.flags_field & NOOUTERTHIS)</span> </span>== <span class="hljs-number" style="color: rgb(0, 128, 128);">0</span> &&
clazztype.getEnclosingType().hasTag(CLASS)) {
<span class="hljs-comment" style="color: rgb(153, 153, 136); font-style: italic;">// Check for the existence of an apropos outer instance</span>
rs.resolveImplicitThis(tree.pos(), env, clazztype);
}
</code></pre>
<p style="margin: 0px 0px 1.2em !important;">This is basically the
same as your new fix. And it doesn’t work in the case I
presented.</p>
<p style="margin: 0px 0px 1.2em !important;">Maurizio</p>
<p style="margin: 0px 0px 1.2em !important;">On 14/06/2024 18:33,
Maurizio Cimadamore wrote:</p>
<p style="margin: 0px 0px 1.2em !important;"></p>
<div class="markdown-here-exclude">
<p></p>
<blockquote type="cite" cite="mid:c6ac22a9-67f0-4b16-b01e-b96470c6d03b@oracle.com">
<p><br>
</p>
<div class="moz-cite-prefix">On 14/06/2024 18:04, Archie Cobbs
wrote:<br>
</div>
<blockquote type="cite" cite="mid:CANSoFxvHT1FuonSM3KLYbN+Q6dAak_5AvMWFLjgcVYNa6Cwj7g@mail.gmail.com">Your
change to the semantics of <span style="font-family:monospace">hasOuterInstance()</span>
happens to invalidate my <a href="https://urldefense.com/v3/__https://github.com/openjdk/jdk/pull/19705/files*diff-ce037c979a568d769d3064d15f94a75cd0311e3e0a9e7899f59d4f9283ad6ea8__;Iw!!ACWV5N9M2RV99hQ!L-9GAxHAzJt6lxEoIcD-NgGJuM7uictTascht11Ui5uc02DZuGr2sDg5IWBSv_Ei2Gq59ZhAZQhMq9hvL4QIKLPqhvnscg$" target="_blank" moz-do-not-send="true">fix for JDK-8334248</a>
but that's OK, the new semantics are more correct and I've
rewritten my fix to instead check for NOOUTERTHIS directly.</blockquote>
<p>Thanks. I wonder... is the real problem here that
Resolve::resolveImplicitThis doesn't skip over classes that
have NOOUTERTHIS set? E.g. your patch just disables the
check if we see NOOUTERTHIS... which is ok if the current
class happens to have NO accessible enclosing instances. But
what if there's *some* accessible enclosing instance?</p>
<p>Something like this:</p>
```java<br>
class Outer {<br>
void m() { }<br>
<br>
class Inner {<br>
Inner() {<br>
class Foo { void g() { m(); } }<br>
super();<br>
class Bar { static void r() { new Foo(); } };<br>
}<br>
}<br>
}<br>
<p>```</p>
<p>Btw, it seems like this code crashes javac (even with both
patches applies). I don't think this code should be allowed
at all (you can't create the local Foo from the static
Bar::r). So, this is related to the bug you mentioned, and I
believe we need checks for the innermost accessible
enclosing instance here.</p>
<p>Maurizio<br>
</p>
<p> <br>
</p>
<p> <br>
</p>
</blockquote>
<p></p>
</div>
<p style="margin: 0px 0px 1.2em !important;"></p>
<div title="MDH:PHA+SGVoLCB5ZXMuIExvb2sgYXQgdGhpcyBjb2RlIGluIEF0dHI6OnZpc2l0TmV3Q2xhc3M6PC9w
PjxwPmBgYGphdmE8YnI+fSBlbHNlIGlmICghY2xhenp0eXBlLnRzeW0uaXNJbnRlcmZhY2UoKSAm
YW1wOyZhbXA7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyAoY2xhenp0eXBlLnRzeW0uZmxhZ3NfZmllbGQgJmFtcDsgTk9PVVRFUlRISVMpID09
IDAgJmFtcDsmYW1wOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsgY2xhenp0eXBlLmdldEVuY2xvc2luZ1R5cGUoKS5oYXNUYWcoQ0xBU1MpKSB7
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyAvLyBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBhcHJvcG9zIG91
dGVyIGluc3RhbmNlPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBycy5yZXNvbHZlSW1wbGljaXRUaGlzKHRyZWUucG9z
KCksIGVudiwgY2xhenp0eXBlKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7IH08YnI+YGBgPC9wPjxwPlRoaXMgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFzIHlv
dXIgbmV3IGZpeC4gQW5kIGl0IGRvZXNuJ3Qgd29yayBpbiB0aGUgY2FzZSBJIHByZXNlbnRlZC48
L3A+PHA+TWF1cml6aW88YnI+PC9wPjxwPjxicj48L3A+PGRpdiBjbGFzcz0ibW96LWNpdGUtcHJl
Zml4Ij5PbiAxNC8wNi8yMDI0IDE4OjMzLCBNYXVyaXppbyBDaW1hZGFtb3JlIHdyb3RlOjxicj48
L2Rpdj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBjaXRlPSJtaWQ6YzZhYzIyYTktNjdmMC00YjE2
LWIwMWUtYjk2NDcwYzZkMDNiQG9yYWNsZS5jb20iPgoKPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7ICI+CiAgCiAgCiAgICA8cD48YnI+CiAgICA8L3A+
CiAgICA8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDE0LzA2LzIwMjQgMTg6MDQsIEFy
Y2hpZSBDb2JicwogICAgICB3cm90ZTo8YnI+CiAgICA8L2Rpdj4KICAgIDxibG9ja3F1b3RlIHR5
cGU9ImNpdGUiIGNpdGU9Im1pZDpDQU5Tb0Z4dkhUMUZ1b25TTTNLTFliTitRNmRBYWtfNUF2TVdG
TGpnY1ZZTmE2Q3dqN2dAbWFpbC5nbWFpbC5jb20iPllvdXIKICAgICAgY2hhbmdlIHRvIHRoZSBz
ZW1hbnRpY3Mgb2YgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+aGFzT3V0ZXJJ
bnN0YW5jZSgpPC9zcGFuPgogICAgICBoYXBwZW5zIHRvIGludmFsaWRhdGUgbXkgPGEgaHJlZj0i
aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuamRrL2pk
ay9wdWxsLzE5NzA1L2ZpbGVzKmRpZmYtY2UwMzdjOTc5YTU2OGQ3NjlkMzA2NGQxNWY5NGE3NWNk
MDMxMWUzZTBhOWU3ODk5ZjU5ZDRmOTI4M2FkNmVhOF9fO0l3ISFBQ1dWNU45TTJSVjk5aFEhTC05
R0F4SEF6SnQ2bHhFb0ljRC1OZ0dKdU03dWljdFRhc2NodDExVWk1dWMwMkRadUdyMnNEZzVJV0JT
dl9FaTJHcTU5WmhBWlFoTXE5aHZMNFFJS0xQcWh2bnNjZyQiIHRhcmdldD0iX2JsYW5rIiBtb3ot
ZG8tbm90LXNlbmQ9InRydWUiPmZpeCBmb3IgSkRLLTgzMzQyNDg8L2E+CiAgICAgIGJ1dCB0aGF0
J3MgT0ssIHRoZSBuZXcgc2VtYW50aWNzIGFyZSBtb3JlIGNvcnJlY3QgYW5kIEkndmUKICAgICAg
cmV3cml0dGVuIG15IGZpeCB0byBpbnN0ZWFkIGNoZWNrIGZvciBOT09VVEVSVEhJUyBkaXJlY3Rs
eS48L2Jsb2NrcXVvdGU+CiAgICA8cD5UaGFua3MuIEkgd29uZGVyLi4uIGlzIHRoZSByZWFsIHBy
b2JsZW0gaGVyZSB0aGF0CiAgICAgIFJlc29sdmU6OnJlc29sdmVJbXBsaWNpdFRoaXMgZG9lc24n
dCBza2lwIG92ZXIgY2xhc3NlcyB0aGF0IGhhdmUKICAgICAgTk9PVVRFUlRISVMgc2V0PyBFLmcu
IHlvdXIgcGF0Y2gganVzdCBkaXNhYmxlcyB0aGUgY2hlY2sgaWYgd2Ugc2VlCiAgICAgIE5PT1VU
RVJUSElTLi4uIHdoaWNoIGlzIG9rIGlmIHRoZSBjdXJyZW50IGNsYXNzIGhhcHBlbnMgdG8gaGF2
ZSBOTwogICAgICBhY2Nlc3NpYmxlIGVuY2xvc2luZyBpbnN0YW5jZXMuIEJ1dCB3aGF0IGlmIHRo
ZXJlJ3MgKnNvbWUqCiAgICAgIGFjY2Vzc2libGUgZW5jbG9zaW5nIGluc3RhbmNlPzwvcD4KICAg
IDxwPlNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgogICAgYGBgamF2YTxicj4KICAgIGNsYXNzIE91
dGVyIHs8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsgdm9pZCBtKCkgeyB9PGJyPgogICAgPGJy
PgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IGNsYXNzIElubmVyIHs8YnI+CiAgICAmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgSW5uZXIoKSB7PGJyPgogICAgJm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7IGNsYXNzIEZvbyB7IHZvaWQgZygpIHsgbSgpOyB9IH08YnI+CiAgICAmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3Vw
ZXIoKTs8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgY2xhc3MgQmFyIHsgc3RhdGljIHZvaWQgcigpIHsgbmV3
IEZvbygpOyB9IH07PGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7IH08YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4KICAgIH08YnI+CiAgICA8
cD5gYGA8L3A+CiAgICA8cD5CdHcsIGl0IHNlZW1zIGxpa2UgdGhpcyBjb2RlIGNyYXNoZXMgamF2
YWMgKGV2ZW4gd2l0aCBib3RoCiAgICAgIHBhdGNoZXMgYXBwbGllcykuIEkgZG9uJ3QgdGhpbmsg
dGhpcyBjb2RlIHNob3VsZCBiZSBhbGxvd2VkIGF0IGFsbAogICAgICAoeW91IGNhbid0IGNyZWF0
ZSB0aGUgbG9jYWwgRm9vIGZyb20gdGhlIHN0YXRpYyBCYXI6OnIpLiBTbywgdGhpcwogICAgICBp
cyByZWxhdGVkIHRvIHRoZSBidWcgeW91IG1lbnRpb25lZCwgYW5kIEkgYmVsaWV2ZSB3ZSBuZWVk
IGNoZWNrcwogICAgICBmb3IgdGhlIGlubmVybW9zdCBhY2Nlc3NpYmxlIGVuY2xvc2luZyBpbnN0
YW5jZSBoZXJlLjwvcD4KICAgIDxwPk1hdXJpemlvPGJyPgogICAgPC9wPgogICAgPHA+Jm5ic3A7
PGJyPgogICAgPC9wPgogICAgPHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxicj4KICAgIDwvcD4KICAK
Cgo8L2Jsb2NrcXVvdGU+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
</body>
</html>