<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<br>
<blockquote type="cite" cite="mid:CANSoFxskeKVyYT6KWDU36RSNLhUGcnFqhO9QyFEW5apyv3DGBg@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div>I'm still not understanding (sorry).</div>
<div><br>
</div>
<div>The new rule for implicit supers would be syntactic as
well.</div>
<div><br>
</div>
<div>The rule is this: Add an implicit super() if there are NO
occurrences of any this() or a super() anywhere in the
constructor.</div>
</div>
</div>
</blockquote>
<br>
So, let's look at the grammar. Where does the production that
matches `super(e)` come from? Its from ConstructorBody:<br>
<br>
ConstructorBody:<br>
{ [ExplicitConstructorInvocation] [BlockStatements] }<br>
<br>
If you pull on the string for BlockStatements, you'll see a whole
nest of statement forms, *none of which match this(e) or super(e)*.
So to allow one of these statements inside a block, you have to
refactor all the statement productions in the language. Then you
have to go through the entire spec and prohibit these in the places
where they can't be used (such as lambdas.) <br>
<br>
<br>
</body>
</html>