browser.js |
|
0 |
global-block-decl-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
1502 |
global-block-decl-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
685 |
global-block-decl-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1291 |
global-block-decl-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
721 |
global-block-decl-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1308 |
global-block-decl-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1211 |
global-block-decl-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1451 |
global-block-decl-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1349 |
global-block-decl-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
641 |
global-block-decl-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1268 |
global-block-decl-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
946 |
global-block-decl-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1468 |
global-block-decl-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1243 |
global-block-decl-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1255 |
global-block-decl-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1248 |
global-block-decl-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1249 |
global-block-decl-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1268 |
global-block-decl-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1727 |
global-block-decl-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
904 |
global-block-decl-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (Block statement in eval code containing a function declaration)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1223 |
global-if-decl-else-decl-a-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
2026 |
global-if-decl-else-decl-a-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1209 |
global-if-decl-else-decl-a-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1815 |
global-if-decl-else-decl-a-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1245 |
global-if-decl-else-decl-a-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1832 |
global-if-decl-else-decl-a-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1735 |
global-if-decl-else-decl-a-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1975 |
global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1873 |
global-if-decl-else-decl-a-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1165 |
global-if-decl-else-decl-a-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1792 |
global-if-decl-else-decl-a-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1470 |
global-if-decl-else-decl-a-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1992 |
global-if-decl-else-decl-a-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1767 |
global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1779 |
global-if-decl-else-decl-a-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1772 |
global-if-decl-else-decl-a-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1773 |
global-if-decl-else-decl-a-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1792 |
global-if-decl-else-decl-a-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
2251 |
global-if-decl-else-decl-a-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1428 |
global-if-decl-else-decl-a-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1747 |
global-if-decl-else-decl-b-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
2027 |
global-if-decl-else-decl-b-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1210 |
global-if-decl-else-decl-b-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1816 |
global-if-decl-else-decl-b-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1246 |
global-if-decl-else-decl-b-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1833 |
global-if-decl-else-decl-b-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1736 |
global-if-decl-else-decl-b-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1976 |
global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1874 |
global-if-decl-else-decl-b-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1166 |
global-if-decl-else-decl-b-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1793 |
global-if-decl-else-decl-b-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1471 |
global-if-decl-else-decl-b-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1993 |
global-if-decl-else-decl-b-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1768 |
global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1780 |
global-if-decl-else-decl-b-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1773 |
global-if-decl-else-decl-b-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1774 |
global-if-decl-else-decl-b-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1793 |
global-if-decl-else-decl-b-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
2252 |
global-if-decl-else-decl-b-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1429 |
global-if-decl-else-decl-b-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1748 |
global-if-decl-else-stmt-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
2013 |
global-if-decl-else-stmt-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1196 |
global-if-decl-else-stmt-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1802 |
global-if-decl-else-stmt-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1232 |
global-if-decl-else-stmt-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1819 |
global-if-decl-else-stmt-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1722 |
global-if-decl-else-stmt-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1962 |
global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1860 |
global-if-decl-else-stmt-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1152 |
global-if-decl-else-stmt-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1779 |
global-if-decl-else-stmt-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1457 |
global-if-decl-else-stmt-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1979 |
global-if-decl-else-stmt-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1754 |
global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1766 |
global-if-decl-else-stmt-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1759 |
global-if-decl-else-stmt-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1760 |
global-if-decl-else-stmt-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1779 |
global-if-decl-else-stmt-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
2238 |
global-if-decl-else-stmt-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1415 |
global-if-decl-else-stmt-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (IfStatement with a declaration in the first statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1734 |
global-if-decl-no-else-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
1976 |
global-if-decl-no-else-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1159 |
global-if-decl-no-else-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1765 |
global-if-decl-no-else-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1195 |
global-if-decl-no-else-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1782 |
global-if-decl-no-else-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1685 |
global-if-decl-no-else-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1925 |
global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1823 |
global-if-decl-no-else-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1115 |
global-if-decl-no-else-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1742 |
global-if-decl-no-else-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1420 |
global-if-decl-no-else-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1942 |
global-if-decl-no-else-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1717 |
global-if-decl-no-else-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1729 |
global-if-decl-no-else-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1722 |
global-if-decl-no-else-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1723 |
global-if-decl-no-else-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1742 |
global-if-decl-no-else-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
2201 |
global-if-decl-no-else-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1378 |
global-if-decl-no-else-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (IfStatement without an else clause in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1697 |
global-if-stmt-else-decl-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
2015 |
global-if-stmt-else-decl-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1198 |
global-if-stmt-else-decl-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1804 |
global-if-stmt-else-decl-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1234 |
global-if-stmt-else-decl-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1821 |
global-if-stmt-else-decl-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1724 |
global-if-stmt-else-decl-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1964 |
global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1862 |
global-if-stmt-else-decl-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
1154 |
global-if-stmt-else-decl-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1781 |
global-if-stmt-else-decl-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1459 |
global-if-stmt-else-decl-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1981 |
global-if-stmt-else-decl-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1756 |
global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1768 |
global-if-stmt-else-decl-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1761 |
global-if-stmt-else-decl-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1762 |
global-if-stmt-else-decl-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1781 |
global-if-stmt-else-decl-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
2240 |
global-if-stmt-else-decl-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1417 |
global-if-stmt-else-decl-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (IfStatement with a declaration in the second statement position in eval code)
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
flags: [generated, noStrict]
info: |
The following rules for IfStatement augment those in 13.6:
IfStatement[Yield, Return]:
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1736 |
global-switch-case-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
1571 |
global-switch-case-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
754 |
global-switch-case-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1360 |
global-switch-case-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
790 |
global-switch-case-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1377 |
global-switch-case-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1280 |
global-switch-case-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1520 |
global-switch-case-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1418 |
global-switch-case-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
710 |
global-switch-case-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1337 |
global-switch-case-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1015 |
global-switch-case-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1537 |
global-switch-case-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1312 |
global-switch-case-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1324 |
global-switch-case-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1317 |
global-switch-case-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1318 |
global-switch-case-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1337 |
global-switch-case-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1796 |
global-switch-case-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
973 |
global-switch-case-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1292 |
global-switch-dflt-eval-global-block-scoping.js |
---
description: A block-scoped binding is created (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
13.2.14 Runtime Semantics: BlockDeclarationInstantiation
[...]
4. For each element d in declarations do
a. For each element dn of the BoundNames of d do
i. If IsConstantDeclaration of d is true, then
[...]
ii. Else,
2. Perform ! envRec.CreateMutableBinding(dn, false).
b. If d is a GeneratorDeclaration production or a FunctionDeclaration
production, then
i. Let fn be the sole element of the BoundNames of d.
ii. Let fo be the result of performing InstantiateFunctionObject for
d with argument env.
iii. Perform envRec.InitializeBinding(fn, fo).
--- |
1594 |
global-switch-dflt-eval-global-existing-block-fn-no-init.js |
---
description: Does not re-initialize binding created by similar forms (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
777 |
global-switch-dflt-eval-global-existing-block-fn-update.js |
---
description: Variable-scoped binding is updated (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1383 |
global-switch-dflt-eval-global-existing-fn-no-init.js |
---
description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
813 |
global-switch-dflt-eval-global-existing-fn-update.js |
---
description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1400 |
global-switch-dflt-eval-global-existing-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1303 |
global-switch-dflt-eval-global-existing-global-update.js |
---
description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1543 |
global-switch-dflt-eval-global-existing-non-enumerable-global-init.js |
---
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
[...]
--- |
1441 |
global-switch-dflt-eval-global-existing-var-no-init.js |
---
description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
a. If declaredFunctionOrVarNames does not contain F, then
[...]
--- |
733 |
global-switch-dflt-eval-global-existing-var-update.js |
---
description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1360 |
global-switch-dflt-eval-global-init.js |
---
description: Variable binding is initialized to `undefined` in outer scope (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
includes: [fnGlobalObject.js, propertyHelper.js]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
i. If varEnvRec is a global Environment Record, then
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
[...]
--- |
1038 |
global-switch-dflt-eval-global-no-skip-try.js |
---
description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1560 |
global-switch-dflt-eval-global-skip-early-err-block.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1335 |
global-switch-dflt-eval-global-skip-early-err-for-in.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1347 |
global-switch-dflt-eval-global-skip-early-err-for-of.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1340 |
global-switch-dflt-eval-global-skip-early-err-for.js |
---
description: Extension not observed when creation of variable binding would produce an early error (for statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1341 |
global-switch-dflt-eval-global-skip-early-err-switch.js |
---
description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
1360 |
global-switch-dflt-eval-global-skip-early-err-try.js |
---
description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
B.3.5 VariableStatements in Catch Blocks
[...]
- It is a Syntax Error if any element of the BoundNames of CatchParameter
also occurs in the VarDeclaredNames of Block unless CatchParameter is
CatchParameter:BindingIdentifier and that element is only bound by a
VariableStatement, the VariableDeclarationList of a for statement, or the
ForBinding of a for-in statement.
--- |
1819 |
global-switch-dflt-eval-global-skip-early-err.js |
---
description: Extension not observed when creation of variable binding would produce an early error (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
ii. If replacing the FunctionDeclaration f with a VariableStatement that
has F as a BindingIdentifier would not produce any Early Errors for
body, then
[...]
--- |
996 |
global-switch-dflt-eval-global-update.js |
---
description: Variable binding value is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
esid: sec-web-compat-evaldeclarationinstantiation
flags: [generated, noStrict]
info: |
B.3.3.3 Changes to EvalDeclarationInstantiation
[...]
b. When the FunctionDeclaration f is evaluated, perform the following steps
in place of the FunctionDeclaration Evaluation algorithm provided in
14.1.21:
i. Let genv be the running execution context's VariableEnvironment.
ii. Let genvRec be genv's EnvironmentRecord.
iii. Let benv be the running execution context's LexicalEnvironment.
iv. Let benvRec be benv's EnvironmentRecord.
v. Let fobj be ! benvRec.GetBindingValue(F, false).
vi. Perform ? genvRec.SetMutableBinding(F, fobj, false).
vii. Return NormalCompletion(empty).
--- |
1315 |
shell.js |
---
description: |
Produce a reliable global object
defines: [fnGlobalObject]
--- |
383 |