----------------------------------------
In 12.1 "Identifiers":
{1}
12.1 / Syntax / prod 3 / rhs 1:
LabelIdentifier : Identifier
Italicize 'Identifier'
----------------------------------------
In 12.1.1 "Static Semantics: Early Errors":
{2}
12.1.1 / group 1 / item 1:
It is a Syntax Error if StringValue of /Identifier/ /does/ /not/ /statically/ /resolve/ /to/ /a/ /declarative/ /environment/ /record/ /binding/.
De-italicize "does not statically ..."
{3}
12.1.1 / group 5 / item 3:
It is a Syntax Error StringValue of /IdentifierName/ is the same ...
After "Error", insert "if".
----------------------------------------
In 12.1.3 "Static Semantics: BoundNames":
{4}
12.1.3 / alg 1 / step 1:
Return new List containing the StringValue of /IdentifierName/.
After "Return", insert "a"
----------------------------------------
In 12.1.4 "Static Semantics: StringValue":
{5}
12.1.4 / header:
Static Semantics: StringValue
"StringValue" is serif italic, should be sans-serif upright.
----------------------------------------
In 12.2 "Primary Expression":
{6}
12.2 / Supplemental Syntax:
The production for ParenthesizedExpression is its defining occurrence,
so should be formatted like other defining productions, i.e.:
flush-left, preceding gap, RHS on the next line with an indent.
----------------------------------------
In 12.2.0.1 "Static Semantics: CoveredParenthesizedExpression":
{7}
12.2.0.1 / group 1 / production:
CoverParenthesizedExpressionAndArrowParameterList[...] : ( Expression[...] )
When an algorithm is associated with a production alternative,
the alternative is typically shown without any "[ ]" grammar annotations
----------------------------------------
In 12.2.2.1 "Runtime Semantics: Evaluation":
{8}
12.2.2.1 / group 1:
There's a production but no algorithm.
----------------------------------------
In 12.2.4.1.2 "Runtime Semantics: ArrayAccumulation":
{9,10}
12.2.4.1.2 / group 5 / step 7.h:
Let nextIndex = nextIndex +1.
Italicize both occurrences of 'nextIndex'
Add a space after the plus?
----------------------------------------
In 12.2.5.6 "Static Semantics: PropName":
{11}
12.2.5.6 / header:
12.2.5.6 Static Semantics: PropName
"12.2.5.6" is serif, should be sans-serif.
"PropName" is serif italic, should be sans-serif upright.
----------------------------------------
In 12.2.5.9 "Runtime Semantics: PropertyDefinitionEvaluation":
{13}
12.2.5.9 / group 1 / step 3:
Let /propDef/ be the result of performing PropertyDefinitionEvaluation of /PropertyDefinition/ with argument /object/.
s|propDef|status|
{14}
12.2.5.9 / group 1 / step 4:
ReturnIfAbrupt(/propDef/).
s|propDef|status|
{15,16}
12.2.5.9 / group 1 / steps 5 + 6:
If /propDef/ is `empty`, then return /propDef/.
Let /status/ be DefinePropertyOrThrow(/object/, /propDef/.[[key]], ...)
Delete the steps?
{17}
12.2.5.9 / group 2 / step 2:
Let /exprValue/ be the result of evaluating /IdentifierReference/.
There are no rules to evaluate an IdentifierReference.
----------------------------------------
In 12.2.9 "Template Literals":
{18}
12.2.9 / Syntax / prod 1 / rhs 2:
TemplateHead Expression[...] [...] TemplateSpans
Italicize 'Expression'
{19}
12.2.9 / Syntax / prod 3 / rhs 1:
TemplateMiddle Expression[...]
Italicize 'Expression'
----------------------------------------
In 12.2.9.2.4 "Runtime Semantics: Evaluation":
{20,21}
12.2.9.2.4 / note 1:
NOTE Tthe string conversion semantics applied to the /Expression/ value
are like Stirng.prototype.concat rather than the + operator.
s|Tthe|The|
s|Stirng|String|
{22,23}
12.2.9.2.4 / note 2:
NOTE Tthe string conversion semantics applied to the /Expression/ value
are like Stirng.prototype.concat rather than the + operator.
s|Tthe|The|
s|Stirng|String|
{24}
12.2.9.2.4 / note 3:
NOTE The string conversion semantics applied to the /Expression/ value
are like Stirng.prototype.concat rather than the + operator.
s|Stirng|String|
----------------------------------------
In 12.3.1.1 "Static Semantics: Contains":
{26}
12.3.1.1 / group 1 / production:
MemberExpression : MemberExpression . IdentifierName
Terminal dot should be in monospace bold.
{27}
12.3.1.1 / group 2 / production:
MemberExpression : super . IdentifierName
Terminal dot should be in monospace bold.
{28}
12.3.1.1 / group 3 / production:
CallExpression : CallExpression . IdentifierName
Terminal dot should be in monospace bold.
----------------------------------------
In 12.3.4.1 "Runtime Semantics: Evaluation":
{29}
12.3.4.1 / group 1 / step 2.a:
check if direct eval
???
{30}
12.3.4.1 / group 2 / step 2:
Let /thisCall/ be this /CallExpressio/
s|Expressio|Expression|
----------------------------------------
In 12.3.4.2 "Runtime Semantics: EvaluateCall":
{31}
12.3.4.2 / step 7.{b,c}:
b. Else, the base of ref is an Environment Record
c. Let /thisValue/ be the result of calling the WithBaseObject concrete method
of GetBase(/ref/).
Step 7.c should presumably be step 7.b.i
----------------------------------------
In 12.3.6.1 "Runtime Semantics: ArgumentListEvaluation":
{32}
12.3.6.1 / group 5 / step 1:
Let /precedingArgs/ be be the result of evaluating /ArgumentList/.
Delete extra "be"
----------------------------------------
In 12.3.7.1 "Runtime Semantics: Evaluation":
{33}
12.3.7.1 / group 1 / step 1:
Let /tagRef/ be evaluating /MemberExpression/.
After "be", insert "the result of"
----------------------------------------
In 12.14.4 "Runtime Semantics: Evaluation":
{34}
12.14.4 / alg 1 / step 1.a:
Let lref be the result of evaluating /LeftHandSideExpression/.
Italicize 'lref'
{35}
12.14.4 / alg 1 / step 1.b:
ReturnIfAbrupt(lref).
Italicize 'lref'
{36}
12.14.4 / alg 1 / step 1.c:
Let rref be the result of evaluating /AssignmentExpression/.
Italicize 'rref'
{37,38}
12.14.4 / alg 1 / step 1.d:
Let rval be GetValue(rref).
Italicize 'rval'
Italicize 'rref'
{39,40}
12.14.4 / alg 1 / step 1.e.i:
Let hasNameProperty be HasOwnProperty(rval, "name").
Italicize 'hasNameProperty'
Italicize 'rval'
{41}
12.14.4 / alg 1 / step 1.e.ii:
ReturnIfAbrupt(hasNameProperty).
Italicize 'hasNameProperty'
{42}
12.14.4 / alg 1 / step 1.e.iii:
If hasNameProperty is *false*, then
Italicize 'hasNameProperty'
{43,44}
12.14.4 / alg 1 / step 1.e.iii.1:
SetFunctionName(rval, GetReferenceName(lref)).
Italicize 'rval'
Italicize 'lref'
{45,46,47}
12.14.4 / alg 1 / step 1.f:
Let status be PutValue(lref, rval).
Italicize 'status'
Italicize 'lref'
Italicize 'rval'
{48}
12.14.4 / alg 1 / step 1.g:
ReturnIfAbrupt(status).
Italicize 'status'
{49}
12.14.4 / alg 1 / step 1.h:
Return rval.
Italicize 'rval'
{50}
12.14.4 / alg 1 / step 2:
Let AssignmentPattern be the parse of the source code corresponding to ...
Italicize 'AssignmentPattern'
{51}
12.14.4 / alg 1 / step 3:
Let rref be the result of evaluating /AssignmentExpression/.
Italicize 'rref'
{52,53}
12.14.4 / alg 1 / step 4:
Let rval be GetValue(rref).
Italicize 'rval'
Italicize 'rref'
{54}
12.14.4 / alg 1 / step 5:
ReturnIfAbrupt(rval).
Italicize 'rval'
{55}
12.14.4 / alg 1 / step 6:
If Type(rval) is not Object, then throw a *TypeError* exception.
Italicize 'rval'
{56,57}
12.14.4 / alg 1 / step 7:
Let status be the result of performing DestructuringAssignmentEvaluation of
AssignmentPattern using rval as the argument.
Italicize 'status'
Italicize 'AssignmentPattern'
Italicize 'rval'
{58}
12.14.4 / alg 1 / step 8:
ReturnIfAbrupt(status).
Italicize 'status'
{59}
12.14.4 / alg 1 / step 9:
Return rval.
Italicize 'rval'
----------------------------------------
In 12.14.5.1 "Static Semantics: Early Errors":
{60}
12.14.5.1 / note:
... even if multiple levels of nested parenthesizes surround /Expression/.
s|parenthesizes|parentheses|
----------------------------------------
In 12.14.5.2 "Runtime Semantics: DestructuringAssignmentEvaluation":
{61}
12.14.5.2 / group 9 / production:
AssignmentProperty : PropertyName : AssignmentElement
Terminal colon (i.e., the second colon) should be in monospace bold.
----------------------------------------
In 12.14.5.3 "Runtime Semantics: IteratorDestructuringAssignmentEvaluation":
{62}
12.14.5.3 / group 7 / step 6.b:
Let v be GetValue(/defaultValue/)
Italicize 'v'
{63}
12.14.5.3 / group 7 / step 7:
If ... is an /ObjectLiteral/ /or/ /an/ /ArrayLiteral/ then
De-italicize "or an"
{64}
12.14.5.3 / group 7 / step 7.a:
... the source code corresponding to DestructuringAssignmentTarget ...
Italicize 'DestructuringAssignmentTarget'
----------------------------------------
In 12.14.5.4 "Runtime Semantics: KeyedDestructuringAssignmentEvaluation":
{65}
12.14.5.4 / group 1 / step 4:
If ... is an /ObjectLiteral/ /or/ /an/ /ArrayLiteral/ then
De-italicize "or an"
----------------------------------------
In 12.15 "Comma Operator ( , )":
{66}
12.15 / Syntax / prod 1 / lhs:
Expression[In, Yield] :
Italicize 'Expression'
{67}
12.15 / Syntax / prod 1 / rhs 1:
AssignmentExpression[?In, ?Yield]
Italicize 'AssignmentExpression'
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fixed in rev24 editor's draft
Rev 24 hasn't fixed these items:
----------------------------------------
In 12.2.0.1 "Static Semantics: CoveredParenthesizedExpression":
{7}
12.2.0.1 / group 1 / production:
CoverParenthesizedExpressionAndArrowParameterList[...] : ( Expression[...] )
When an algorithm is associated with a production alternative,
the alternative is typically shown without any "[ ]" grammar annotations
----------------------------------------
In 12.2.5.9 "Runtime Semantics: PropertyDefinitionEvaluation":
{17}
12.2.5.9 / group 2 / step 2:
Let /exprValue/ be the result of evaluating /IdentifierReference/.
There are no rules to evaluate an IdentifierReference.
----------------------------------------
In 12.3.4.1 "Runtime Semantics: Evaluation":
{29}
12.3.4.1 / group 1 / step 2.a:
check if direct eval
???
XXX
In 12.2.0.1 the grammar parameter are shown because they need to be used in the secondary parse that is performed..
fixed in rev25 editor's draft
added bug 2834 to track the 12.3.4.1 to-do item.
confirmed fixed.