In 13.2 "Arrow Function Definitions",
under "Runtime Semantics: Evaluation",
rule 1 step 3 says:
Let closure be the result of performing the FunctionCreate abstract operation
with arguments Arrow, ArrowParameters, ConciseBody, scope, and strict.
However, this passes:
-- ArrowParameters where FunctionCreate expects a FormalParameterList, and
-- ConciseBody where FunctionCreate expects a FunctionBody.
Similarly, in 13.3 "Method Definitions",
under "Runtime Semantics: Property Definition Evaluation",
rule 4 steps 6.a and 7.a
try to pass PropertySetParameterList where FunctionCreate expects a FormalParameterList.
Actually, it FunctionCreate doesn't (and downstream consummers of the function objects) don't need to get a /FormalParameterList/ AST in that parameter position. All they need is an AST is is polymorphic WRT the specs semantics rules with /FormalParameterList/. similarly for FunctionBody
However, I can see that the parameter names to FunctionCreate are misleading in that regard so I'll change them
(In reply to comment #2)
>
> However, I can see that the parameter names to FunctionCreate are misleading in
> that regard so I'll change them
Ah, good. That should take care of the other problem I had with FunctionCreate:
it has (I think) the only two cases where a parameter name is the same as a nonterminal name.
in October 26, 2012 release draft
Okay, so in the definition of FunctionCreate, you renamed:
FormalParameterList -> ParameterList
FunctionBody -> Body
But a few of the invocations of FunctionCreate refer to its parameters by name, and so you need to make the corresponding changes there:
10.6 "Arguments Object" / MakeArgGetter / step 4
10.6 "Arguments Object" / MakeArgSetter / step 5
15.3.2.1 "new Function" / step 11
(The last of these doesn't reference FunctionCreate explicitly, but presumably should.)
fixed in rev21 editor's draft
fixed in rev21 draft
This one hasn't been fixed: (The section number is now 9.4.4.1.)
> 10.6 "Arguments Object" / MakeArgSetter / step 5
It refers to FunctionCreate's 3rd parameter as "FunctionBody".
That last one was fixed in rev23.