Skip to content

Commit

Permalink
Normative: add #x in obj syntax (tc39#2290)
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed May 7, 2021
1 parent 866d7de commit 4ad6933
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions spec.html
Expand Up @@ -7756,6 +7756,7 @@ <h1>Static Semantics: IsFunctionDefinition</h1>
RelationalExpression `&gt;=` ShiftExpression
RelationalExpression `instanceof` ShiftExpression
RelationalExpression `in` ShiftExpression
PrivateIdentifier `in` ShiftExpression

EqualityExpression :
EqualityExpression `==` RelationalExpression
Expand Down Expand Up @@ -8500,6 +8501,7 @@ <h1>Static Semantics: AssignmentTargetType</h1>
RelationalExpression `&gt;=` ShiftExpression
RelationalExpression `instanceof` ShiftExpression
RelationalExpression `in` ShiftExpression
PrivateIdentifier `in` ShiftExpression

EqualityExpression :
EqualityExpression `==` RelationalExpression
Expand Down Expand Up @@ -17199,6 +17201,7 @@ <h2>Syntax</h2>
RelationalExpression[?In, ?Yield, ?Await] `&gt;=` ShiftExpression[?Yield, ?Await]
RelationalExpression[?In, ?Yield, ?Await] `instanceof` ShiftExpression[?Yield, ?Await]
[+In] RelationalExpression[+In, ?Yield, ?Await] `in` ShiftExpression[?Yield, ?Await]
[+In] PrivateIdentifier `in` ShiftExpression[?Yield, ?Await]
</emu-grammar>
<emu-note>
<p>The <sub>[In]</sub> grammar parameter is needed to avoid confusing the `in` operator in a relational expression with the `in` operator in a `for` statement.</p>
Expand Down Expand Up @@ -17263,6 +17266,19 @@ <h1>Runtime Semantics: Evaluation</h1>
1. If Type(_rval_) is not Object, throw a *TypeError* exception.
1. Return ? HasProperty(_rval_, ? ToPropertyKey(_lval_)).
</emu-alg>
<emu-grammar>RelationalExpression : PrivateIdentifier `in` ShiftExpression</emu-grammar>
<emu-alg>
1. Let _privateIdentifier_ be the StringValue of |PrivateIdentifier|.
1. Let _rref_ be the result of evaluating |ShiftExpression|.
1. Let _rval_ be ? GetValue(_rref_).
1. If Type(_rval_) is not Object, throw a *TypeError* exception.
1. Let _env_ be the running execution context's PrivateEnvironment.
1. Let _privateNameBinding_ be ? ResolveBinding(_privateIdentifier_, _env_).
1. Let _privateName_ be ? GetValue(_privateNameBinding_).
1. Assert: _privateName_ is a Private Name.
1. If ! PrivateElementFind(_privateName_, _rval) is not ~empty~, return *true*.
1. Return *false*.
</emu-alg>
</emu-clause>

<emu-clause id="sec-instanceofoperator" aoid="InstanceofOperator">
Expand Down Expand Up @@ -21305,6 +21321,14 @@ <h1>Static Semantics: AllPrivateIdentifiersValid</h1>
1. Append to _newNames_ the elements of PrivateBoundIdentifiers of |ClassBody|.
1. Return AllPrivateIdentifiersValid of |ClassElementList| with argument _newNames_.
</emu-alg>

<emu-grammar>RelationalExpression : PrivateIdentifier `in` ShiftExpression</emu-grammar>
<emu-alg>
1. If StringValue of |PrivateIdentifier| is in _names_, return *true*.
1. Return *false*.
</emu-alg>

<p>For all other grammatical productions, recurse on subexpressions/substatements, passing in the _names_ of the caller. If all pieces return *true*, then return *true*. If any returns *false*, return *false*.</p>
</emu-clause>

<emu-clause id="sec-class-definitions-static-semantics-privateboundidentifiers" type="sdo" aoid="PrivateBoundIdentifiers">
Expand Down Expand Up @@ -22170,6 +22194,7 @@ <h1>Expression Rules</h1>
RelationalExpression `&gt;=` ShiftExpression
RelationalExpression `instanceof` ShiftExpression
RelationalExpression `in` ShiftExpression
PrivateIdentifier `in` ShiftExpression

ShiftExpression :
ShiftExpression `&lt;&lt;` AdditiveExpression
Expand Down

0 comments on commit 4ad6933

Please sign in to comment.