Skip to content

Commit

Permalink
Switch back to a production parameter, update ASI note
Browse files Browse the repository at this point in the history
  • Loading branch information
rbuckton committed Mar 22, 2023
1 parent c541efb commit 3044fd9
Showing 1 changed file with 23 additions and 26 deletions.
49 changes: 23 additions & 26 deletions spec.html
Original file line number Diff line number Diff line change
Expand Up @@ -17794,6 +17794,9 @@ <h1>Rules of Automatic Semicolon Insertion</h1>
LeftHandSideExpression[?Yield, ?Await] [no LineTerminator here] `++`
LeftHandSideExpression[?Yield, ?Await] [no LineTerminator here] `--`

UsingDeclaration[In, Yield, Await] :
`using` [no LineTerminator here] [lookahead != `await`] BindingList[?In, ?Yield, ?Await, ~Pattern] `;`

ContinueStatement[Yield, Await] :
`continue` `;`
`continue` [no LineTerminator here] LabelIdentifier[?Yield, ?Await] `;`
Expand Down Expand Up @@ -17849,6 +17852,9 @@ <h1>Rules of Automatic Semicolon Insertion</h1>
<li>
When a `++` or `--` token is encountered where the parser would treat it as a postfix operator, and at least one |LineTerminator| occurred between the preceding token and the `++` or `--` token, then a semicolon is automatically inserted before the `++` or `--` token.
</li>
<li>
When a `using` token is encountered and a |LineTerminator| is encountered before an |IdentifierName| token, a semicolon is automatically inserted after the `using` token.
</li>
<li>
When a `continue`, `break`, `return`, `throw`, or `yield` token is encountered and a |LineTerminator| is encountered before the next token, a semicolon is automatically inserted after the `continue`, `break`, `return`, `throw`, or `yield` token.
</li>
Expand All @@ -17867,6 +17873,9 @@ <h1>Rules of Automatic Semicolon Insertion</h1>
<li>
A postfix `++` or `--` operator should be on the same line as its operand.
</li>
<li>
A |BindingList| in a `using` declaration should start on the same line as the `using` token.
</li>
<li>
An |Expression| in a `return` or `throw` statement or an |AssignmentExpression| in a `yield` expression should start on the same line as the `return`, `throw`, or `yield` token.
</li>
Expand Down Expand Up @@ -21278,23 +21287,23 @@ <h1>Let, Const, and Using Declarations</h1>
<h2>Syntax</h2>
<emu-grammar type="definition">
LexicalDeclaration[In, Yield, Await] :
LetOrConst BindingList[?In, ?Yield, ?Await] `;`
LetOrConst BindingList[?In, ?Yield, ?Await, +Pattern] `;`
UsingDeclaration[?In, ?Yield, ?Await]

LetOrConst :
`let`
`const`

UsingDeclaration[In, Yield, Await] :
`using` [no LineTerminator here] [lookahead != `await`] BindingList[?In, ?Yield, ?Await] `;`
`using` [no LineTerminator here] [lookahead != `await`] BindingList[?In, ?Yield, ?Await, ~Pattern] `;`

BindingList[In, Yield, Await] :
LexicalBinding[?In, ?Yield, ?Await]
BindingList[?In, ?Yield, ?Await] `,` LexicalBinding[?In, ?Yield, ?Await]
BindingList[In, Yield, Await, Pattern] :
LexicalBinding[?In, ?Yield, ?Await, ?Pattern]
BindingList[?In, ?Yield, ?Await, ?Pattern] `,` LexicalBinding[?In, ?Yield, ?Await, ?Pattern]

LexicalBinding[In, Yield, Await] :
LexicalBinding[In, Yield, Await, Pattern] :
BindingIdentifier[?Yield, ?Await] Initializer[?In, ?Yield, ?Await]?
BindingPattern[?Yield, ?Await] Initializer[?In, ?Yield, ?Await]
[+Pattern] BindingPattern[?Yield, ?Await] Initializer[?In, ?Yield, ?Await]
</emu-grammar>

<emu-clause id="sec-let-const-and-using-declarations-static-semantics-early-errors" oldids="sec-let-and-const-declarations-static-semantics-early-errors">
Expand Down Expand Up @@ -21329,12 +21338,6 @@ <h1>Static Semantics: Early Errors</h1>
It is a Syntax Error if |Initializer| is not present and IsConstantDeclaration of the |LexicalDeclaration| containing this |LexicalBinding| is *true*.
</li>
</ul>
<emu-grammar>LexicalBinding : BindingPattern Initializer</emu-grammar>
<ul>
<li>
It is a Syntax Error if IsUsingDeclaration of the |LexicalDeclaration| containing this |LexicalBinding| is *true*.
</li>
</ul>
</emu-clause>

<emu-clause id="sec-let-const-and-using-declarations-runtime-semantics-evaluation" oldids="sec-let-and-const-declarations-runtime-semantics-evaluation" type="sdo">
Expand Down Expand Up @@ -21987,22 +21990,22 @@ <h2>Syntax</h2>
<emu-grammar type="definition">
ForInOfStatement[Yield, Await, Return] :
`for` `(` [lookahead != `let` `[`] LeftHandSideExpression[?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` `var` ForBinding[?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` `var` ForBinding[?Yield, ?Await, +Pattern] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` ForDeclaration[?Yield, ?Await, ~Using] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` [lookahead &notin; { `let`, `async` `of` }] LeftHandSideExpression[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` `var` ForBinding[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` `var` ForBinding[?Yield, ?Await, +Pattern] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
`for` `(` [lookahead != `using` `of`] ForDeclaration[?Yield, ?Await, +Using] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
[+Await] `for` `await` `(` [lookahead != `let`] LeftHandSideExpression[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
[+Await] `for` `await` `(` `var` ForBinding[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
[+Await] `for` `await` `(` `var` ForBinding[?Yield, ?Await, +Pattern] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]
[+Await] `for` `await` `(` [lookahead != `using` `of`] ForDeclaration[?Yield, ?Await, +Using] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return]

ForDeclaration[Yield, Await, Using] :
LetOrConst ForBinding[?Yield, ?Await]
[+Using] `using` [no LineTerminator here] [lookahead != `await`] ForBinding[?Yield, ?Await]
LetOrConst ForBinding[?Yield, ?Await, +Pattern]
[+Using] `using` [no LineTerminator here] [lookahead != `await`] ForBinding[?Yield, ?Await, ~Pattern]

ForBinding[Yield, Await] :
ForBinding[Yield, Await, Pattern] :
BindingIdentifier[?Yield, ?Await]
BindingPattern[?Yield, ?Await]
[+Pattern] BindingPattern[?Yield, ?Await]
</emu-grammar>
<emu-note>
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads"></emu-xref>.</p>
Expand Down Expand Up @@ -22065,12 +22068,6 @@ <h1>Static Semantics: Early Errors</h1>
It is a Syntax Error if the BoundNames of |ForDeclaration| contains any duplicate entries.
</li>
</ul>
<emu-grammar>ForBinding : BindingPattern</emu-grammar>
<ul>
<li>
It is a Syntax Error if this |ForBinding| is contained within a |ForDeclaration| and IsUsingDeclaration of that |ForDeclaration| is *true*.
</li>
</ul>
</emu-clause>

<emu-clause id="sec-static-semantics-isdestructuring" oldids="sec-static-semantics-static-semantics-isdestructuring,sec-for-in-and-for-of-statements-static-semantics-isdestructuring" type="sdo">
Expand Down

0 comments on commit 3044fd9

Please sign in to comment.