archives

« Bugzilla Issues Index

#814 — 13.2: bad arguments to FunctionCreate


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.