archives

« Bugzilla Issues Index

#2563 — 13.6.4.4 Runtime Semantics: BindingInstantiation; IsConstantDeclaration condition question


See: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-bindinginstantiation

In this algorithm, the conditional binding operation checks if IsConstantDeclaration is false:

If IsConstantDeclaration of LetOrConst is false, then
Call environment’s CreateMutableBinding concrete method with argument name.
Assert: The above call to CreateMutableBinding will never return an abrupt completion.
Else,
Call environment’s CreateImmutableBinding concrete method with argument name.


The rest of the spec checks if IsConstantDeclaration is true:


9.2.14 Function Declaration Instantiation

If IsConstantDeclaration of d is true, then
Call env’s CreateImmutableBinding concrete method passing dn as the argument.
Else,
Let status be the result of calling env’s CreateMutableBinding concrete method passing dn and false as the arguments.
Assert: status is never an abrupt completion.

15.1.8 Runtime Semantics: GlobalDeclarationInstantiation

If IsConstantDeclaration of d is true, then
Let status be the result of calling env’s CreateImmutableBinding concrete method passing dn as the argument.
Else,
Let status be the result of calling env’s CreateMutableBinding concrete method passing dn and false as the arguments.




I suggest re-ordering the first to be consistent with the other algorithms


fixed in rev23 editor's draft


fixed in rev23 draft