Name Description Size
block-decl-global-block-scoping.js --- description: A block-scoped binding is created (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation 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). --- 1476
block-decl-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 769
block-decl-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1266
block-decl-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 723
block-decl-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1270
block-decl-global-existing-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1241
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1300
block-decl-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 744
block-decl-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1243
block-decl-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 958
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1408
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1220
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1235
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1228
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1228
block-decl-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 the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1242
block-decl-global-skip-early-err-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1646
block-decl-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 880
block-decl-global-update.js --- description: Variable binding value is updated following evaluation (Block statement in the global scope containing a function declaration) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1199
browser.js 0
if-decl-else-decl-a-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in the global scope) 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). --- 1996
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 1289
if-decl-else-decl-a-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1786
if-decl-else-decl-a-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 1243
if-decl-else-decl-a-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1790
if-decl-else-decl-a-global-existing-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1761
if-decl-else-decl-a-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1820
if-decl-else-decl-a-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1264
if-decl-else-decl-a-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1763
if-decl-else-decl-a-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1478
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1928
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1740
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1755
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1748
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1748
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1762
if-decl-else-decl-a-global-skip-early-err-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 2166
if-decl-else-decl-a-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1400
if-decl-else-decl-a-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1719
if-decl-else-decl-b-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in the global scope) 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). --- 1997
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 1290
if-decl-else-decl-b-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1787
if-decl-else-decl-b-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 1244
if-decl-else-decl-b-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1791
if-decl-else-decl-b-global-existing-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1762
if-decl-else-decl-b-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1821
if-decl-else-decl-b-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1265
if-decl-else-decl-b-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1764
if-decl-else-decl-b-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1479
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1929
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1741
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1756
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1749
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1749
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1763
if-decl-else-decl-b-global-skip-early-err-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 2167
if-decl-else-decl-b-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1401
if-decl-else-decl-b-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1720
if-decl-else-stmt-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the first statement position in the global scope) 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). --- 1983
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 1276
if-decl-else-stmt-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1773
if-decl-else-stmt-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 1230
if-decl-else-stmt-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1777
if-decl-else-stmt-global-existing-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1748
if-decl-else-stmt-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1807
if-decl-else-stmt-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1251
if-decl-else-stmt-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1750
if-decl-else-stmt-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1465
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1915
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1727
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1742
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1735
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1735
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1749
if-decl-else-stmt-global-skip-early-err-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 2153
if-decl-else-stmt-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1387
if-decl-else-stmt-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the first statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1706
if-decl-no-else-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement without an else clause in the global scope) 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). --- 1946
if-decl-no-else-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 1239
if-decl-no-else-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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
if-decl-no-else-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 1193
if-decl-no-else-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1740
if-decl-no-else-global-existing-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1711
if-decl-no-else-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1770
if-decl-no-else-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1214
if-decl-no-else-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1713
if-decl-no-else-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1428
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1878
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1690
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1705
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1698
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1698
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1712
if-decl-no-else-global-skip-early-err-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 2116
if-decl-no-else-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1350
if-decl-no-else-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement without an else clause in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1669
if-stmt-else-decl-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the second statement position in the global scope) 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). --- 1985
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 1278
if-stmt-else-decl-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1775
if-stmt-else-decl-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 1232
if-stmt-else-decl-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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
if-stmt-else-decl-global-existing-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1750
if-stmt-else-decl-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 the global scope) 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 GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1809
if-stmt-else-decl-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1253
if-stmt-else-decl-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1752
if-stmt-else-decl-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1467
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1917
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1729
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1744
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1737
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1737
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1751
if-stmt-else-decl-global-skip-early-err-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 2155
if-stmt-else-decl-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 the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1389
if-stmt-else-decl-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the second statement position in the global scope) 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.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1708
script-decl-lex-collision.js --- esid: sec-globaldeclarationinstantiation description: Let binding collision with existing var declaration that was created for hoisted function. info: | [...] 3. For each element name of lexNames, do a. If env.HasVarDeclaration(name) is true, throw a SyntaxError exception. flags: [noStrict] --- 670
shell.js --- description: | Produce a reliable global object defines: [fnGlobalObject] --- 383
switch-case-global-block-scoping.js --- description: A block-scoped binding is created (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation 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). --- 1521
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 814
switch-case-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1311
switch-case-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 768
switch-case-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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
switch-case-global-existing-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1286
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1345
switch-case-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 789
switch-case-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1288
switch-case-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1003
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1453
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1265
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1280
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1273
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1273
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1287
switch-case-global-skip-early-err-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1691
switch-case-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 925
switch-case-global-update.js --- description: Variable binding value is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1244
switch-dflt-global-block-scoping.js --- description: A block-scoped binding is created (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation 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). --- 1524
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. --- 817
switch-dflt-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1314
switch-dflt-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] 1. Let fnDefinable be ? envRec.CanDeclareGlobalFunction(F). 2. If fnDefinable is true, then --- 771
switch-dflt-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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). --- 1318
switch-dflt-global-existing-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1289
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to GlobalDeclarationInstantiation [...] Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1348
switch-dflt-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 792
switch-dflt-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] c. 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. ii. 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
switch-dflt-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If declaredFunctionOrVarNames does not contain F, then i. Perform ? envRec.CreateGlobalFunctionBinding(F, undefined, false). ii. Append F to declaredFunctionOrVarNames. [...] --- 1006
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1456
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1268
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1283
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1276
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1276
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 1290
switch-dflt-global-skip-early-err-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, 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. --- 1694
switch-dflt-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 the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] --- 928
switch-dflt-global-update.js --- description: Variable binding value is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in the global scope) esid: sec-web-compat-globaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] e. 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). --- 1247