Name Description Size
block-decl-nostrict.js --- esid: sec-web-compat-evaldeclarationinstantiation description: > AnnexB extension not honored in strict mode, Block statement in eval code containing a function declaration info: | B.3.3.3 Changes to EvalDeclarationInstantiation 1. If strict is false, then ... flags: [noStrict] --- 605
browser.js 0
func-block-decl-eval-func-block-scoping.js --- description: A block-scoped binding is created (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1558
func-block-decl-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 733
func-block-decl-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1363
func-block-decl-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1288
func-block-decl-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1360
func-block-decl-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 683
func-block-decl-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1324
func-block-decl-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1237
func-block-decl-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 952
func-block-decl-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1510
func-block-decl-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1352
func-block-decl-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1362
func-block-decl-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1355
func-block-decl-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1358
func-block-decl-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1379
func-block-decl-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1783
func-block-decl-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 968
func-block-decl-eval-func-update.js --- description: Variable binding value is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1267
func-if-decl-else-decl-a-eval-func-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2082
func-if-decl-else-decl-a-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1257
func-if-decl-else-decl-a-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1887
func-if-decl-else-decl-a-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1812
func-if-decl-else-decl-a-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1884
func-if-decl-else-decl-a-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1207
func-if-decl-else-decl-a-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1848
func-if-decl-else-decl-a-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1761
func-if-decl-else-decl-a-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1476
func-if-decl-else-decl-a-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2034
func-if-decl-else-decl-a-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1876
func-if-decl-else-decl-a-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1886
func-if-decl-else-decl-a-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1879
func-if-decl-else-decl-a-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1882
func-if-decl-else-decl-a-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1903
func-if-decl-else-decl-a-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2307
func-if-decl-else-decl-a-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1492
func-if-decl-else-decl-a-eval-func-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1791
func-if-decl-else-decl-b-eval-func-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2083
func-if-decl-else-decl-b-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1258
func-if-decl-else-decl-b-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1888
func-if-decl-else-decl-b-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1813
func-if-decl-else-decl-b-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1885
func-if-decl-else-decl-b-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1208
func-if-decl-else-decl-b-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1849
func-if-decl-else-decl-b-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1762
func-if-decl-else-decl-b-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1477
func-if-decl-else-decl-b-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2035
func-if-decl-else-decl-b-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1877
func-if-decl-else-decl-b-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1887
func-if-decl-else-decl-b-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1880
func-if-decl-else-decl-b-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1883
func-if-decl-else-decl-b-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1904
func-if-decl-else-decl-b-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2308
func-if-decl-else-decl-b-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1493
func-if-decl-else-decl-b-eval-func-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1792
func-if-decl-else-stmt-eval-func-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2069
func-if-decl-else-stmt-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1244
func-if-decl-else-stmt-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1874
func-if-decl-else-stmt-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1799
func-if-decl-else-stmt-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1871
func-if-decl-else-stmt-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1194
func-if-decl-else-stmt-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1835
func-if-decl-else-stmt-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1748
func-if-decl-else-stmt-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1463
func-if-decl-else-stmt-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2021
func-if-decl-else-stmt-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1863
func-if-decl-else-stmt-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1873
func-if-decl-else-stmt-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1866
func-if-decl-else-stmt-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1869
func-if-decl-else-stmt-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1890
func-if-decl-else-stmt-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2294
func-if-decl-else-stmt-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1479
func-if-decl-else-stmt-eval-func-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1778
func-if-decl-no-else-eval-func-block-scoping.js --- description: A block-scoped binding is created (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2032
func-if-decl-no-else-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1207
func-if-decl-no-else-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1837
func-if-decl-no-else-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1762
func-if-decl-no-else-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1834
func-if-decl-no-else-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1157
func-if-decl-no-else-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1798
func-if-decl-no-else-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1711
func-if-decl-no-else-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1426
func-if-decl-no-else-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1984
func-if-decl-no-else-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1826
func-if-decl-no-else-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1836
func-if-decl-no-else-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1829
func-if-decl-no-else-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1832
func-if-decl-no-else-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1853
func-if-decl-no-else-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2257
func-if-decl-no-else-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1442
func-if-decl-no-else-eval-func-update.js --- description: Variable binding value is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1741
func-if-stmt-else-decl-eval-func-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2071
func-if-stmt-else-decl-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1246
func-if-stmt-else-decl-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1876
func-if-stmt-else-decl-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1801
func-if-stmt-else-decl-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1873
func-if-stmt-else-decl-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1196
func-if-stmt-else-decl-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1837
func-if-stmt-else-decl-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1750
func-if-stmt-else-decl-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1465
func-if-stmt-else-decl-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2023
func-if-stmt-else-decl-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1865
func-if-stmt-else-decl-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1875
func-if-stmt-else-decl-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1868
func-if-stmt-else-decl-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1871
func-if-stmt-else-decl-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1892
func-if-stmt-else-decl-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2296
func-if-stmt-else-decl-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1481
func-if-stmt-else-decl-eval-func-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1780
func-switch-case-eval-func-block-scoping.js --- description: A block-scoped binding is created (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1635
func-switch-case-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 810
func-switch-case-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1440
func-switch-case-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1365
func-switch-case-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1437
func-switch-case-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 760
func-switch-case-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1401
func-switch-case-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1314
func-switch-case-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1029
func-switch-case-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1587
func-switch-case-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1429
func-switch-case-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1439
func-switch-case-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1432
func-switch-case-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1435
func-switch-case-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1456
func-switch-case-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1860
func-switch-case-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1045
func-switch-case-eval-func-update.js --- description: Variable binding value is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1344
func-switch-dflt-eval-func-block-scoping.js --- description: A block-scoped binding is created (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1658
func-switch-dflt-eval-func-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 833
func-switch-dflt-eval-func-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1463
func-switch-dflt-eval-func-existing-fn-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1388
func-switch-dflt-eval-func-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1460
func-switch-dflt-eval-func-existing-var-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 783
func-switch-dflt-eval-func-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1424
func-switch-dflt-eval-func-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then i. If varEnvRec is a global Environment Record, then [...] ii. Else, i. Let bindingExists be varEnvRec.HasBinding(F). ii. If bindingExists is false, then i. Perform ! varEnvRec.CreateMutableBinding(F, true). ii. Perform ! varEnvRec.InitializeBinding(F, undefined). [...] --- 1337
func-switch-dflt-eval-func-no-skip-param.js --- description: Extension observed when there is a formal parameter with the same name (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1052
func-switch-dflt-eval-func-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1610
func-switch-dflt-eval-func-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1452
func-switch-dflt-eval-func-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1462
func-switch-dflt-eval-func-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1455
func-switch-dflt-eval-func-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1458
func-switch-dflt-eval-func-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1479
func-switch-dflt-eval-func-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1883
func-switch-dflt-eval-func-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1068
func-switch-dflt-eval-func-update.js --- description: Variable binding value is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1367
global-block-decl-eval-global-block-scoping.js --- description: A block-scoped binding is created (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1496
global-block-decl-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 679
global-block-decl-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1285
global-block-decl-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 715
global-block-decl-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1302
global-block-decl-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1205
global-block-decl-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1445
global-block-decl-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1343
global-block-decl-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 635
global-block-decl-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1262
global-block-decl-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 940
global-block-decl-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1462
global-block-decl-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1237
global-block-decl-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1249
global-block-decl-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1242
global-block-decl-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1243
global-block-decl-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1262
global-block-decl-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1721
global-block-decl-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 898
global-block-decl-eval-global-update.js --- description: Variable binding value is updated following evaluation (Block statement in eval code containing a function declaration) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1217
global-if-decl-else-decl-a-eval-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2020
global-if-decl-else-decl-a-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1203
global-if-decl-else-decl-a-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1809
global-if-decl-else-decl-a-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1239
global-if-decl-else-decl-a-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1826
global-if-decl-else-decl-a-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1729
global-if-decl-else-decl-a-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1969
global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1867
global-if-decl-else-decl-a-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1159
global-if-decl-else-decl-a-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1786
global-if-decl-else-decl-a-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1464
global-if-decl-else-decl-a-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1986
global-if-decl-else-decl-a-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1761
global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1773
global-if-decl-else-decl-a-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1766
global-if-decl-else-decl-a-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1767
global-if-decl-else-decl-a-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1786
global-if-decl-else-decl-a-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2245
global-if-decl-else-decl-a-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1422
global-if-decl-else-decl-a-eval-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1741
global-if-decl-else-decl-b-eval-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2021
global-if-decl-else-decl-b-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1204
global-if-decl-else-decl-b-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1810
global-if-decl-else-decl-b-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1240
global-if-decl-else-decl-b-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1827
global-if-decl-else-decl-b-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1730
global-if-decl-else-decl-b-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1970
global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1868
global-if-decl-else-decl-b-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1160
global-if-decl-else-decl-b-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1787
global-if-decl-else-decl-b-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1465
global-if-decl-else-decl-b-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1987
global-if-decl-else-decl-b-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1762
global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1774
global-if-decl-else-decl-b-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1767
global-if-decl-else-decl-b-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1768
global-if-decl-else-decl-b-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1787
global-if-decl-else-decl-b-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2246
global-if-decl-else-decl-b-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1423
global-if-decl-else-decl-b-eval-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in both statement positions in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1742
global-if-decl-else-stmt-eval-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2007
global-if-decl-else-stmt-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1190
global-if-decl-else-stmt-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1796
global-if-decl-else-stmt-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1226
global-if-decl-else-stmt-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1813
global-if-decl-else-stmt-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1716
global-if-decl-else-stmt-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1956
global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1854
global-if-decl-else-stmt-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1146
global-if-decl-else-stmt-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1773
global-if-decl-else-stmt-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1451
global-if-decl-else-stmt-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1973
global-if-decl-else-stmt-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1748
global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1760
global-if-decl-else-stmt-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1753
global-if-decl-else-stmt-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1754
global-if-decl-else-stmt-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1773
global-if-decl-else-stmt-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2232
global-if-decl-else-stmt-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1409
global-if-decl-else-stmt-eval-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the first statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1728
global-if-decl-no-else-eval-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1970
global-if-decl-no-else-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1153
global-if-decl-no-else-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1759
global-if-decl-no-else-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1189
global-if-decl-no-else-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1776
global-if-decl-no-else-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1679
global-if-decl-no-else-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1919
global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1817
global-if-decl-no-else-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1109
global-if-decl-no-else-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1736
global-if-decl-no-else-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1414
global-if-decl-no-else-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1936
global-if-decl-no-else-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1711
global-if-decl-no-else-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1723
global-if-decl-no-else-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1716
global-if-decl-no-else-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1717
global-if-decl-no-else-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1736
global-if-decl-no-else-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2195
global-if-decl-no-else-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1372
global-if-decl-no-else-eval-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement without an else clause in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1691
global-if-stmt-else-decl-eval-global-block-scoping.js --- description: A block-scoped binding is created (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 2009
global-if-stmt-else-decl-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1192
global-if-stmt-else-decl-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1798
global-if-stmt-else-decl-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1228
global-if-stmt-else-decl-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1815
global-if-stmt-else-decl-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1718
global-if-stmt-else-decl-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1958
global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1856
global-if-stmt-else-decl-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 1148
global-if-stmt-else-decl-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1775
global-if-stmt-else-decl-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1453
global-if-stmt-else-decl-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1975
global-if-stmt-else-decl-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1750
global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1762
global-if-stmt-else-decl-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1755
global-if-stmt-else-decl-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1756
global-if-stmt-else-decl-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1775
global-if-stmt-else-decl-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 2234
global-if-stmt-else-decl-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1411
global-if-stmt-else-decl-eval-global-update.js --- description: Variable binding value is updated following evaluation (IfStatement with a declaration in the second statement position in eval code) esid: sec-functiondeclarations-in-ifstatement-statement-clauses flags: [generated, noStrict] info: | The following rules for IfStatement augment those in 13.6: IfStatement[Yield, Return]: if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return] if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield] if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1730
global-switch-case-eval-global-block-scoping.js --- description: A block-scoped binding is created (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1565
global-switch-case-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 748
global-switch-case-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1354
global-switch-case-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 784
global-switch-case-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1371
global-switch-case-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1274
global-switch-case-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1514
global-switch-case-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1412
global-switch-case-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 704
global-switch-case-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1331
global-switch-case-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1009
global-switch-case-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1531
global-switch-case-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1306
global-switch-case-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1318
global-switch-case-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1311
global-switch-case-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1312
global-switch-case-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1331
global-switch-case-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1790
global-switch-case-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 967
global-switch-case-eval-global-update.js --- description: Variable binding value is updated following evaluation (Function declaration in the `case` clause of a `switch` statement in eval code) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1286
global-switch-dflt-eval-global-block-scoping.js --- description: A block-scoped binding is created (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | 13.2.14 Runtime Semantics: BlockDeclarationInstantiation [...] 4. For each element d in declarations do a. For each element dn of the BoundNames of d do i. If IsConstantDeclaration of d is true, then [...] ii. Else, 2. Perform ! envRec.CreateMutableBinding(dn, false). b. If d is a GeneratorDeclaration production or a FunctionDeclaration production, then i. Let fn be the sole element of the BoundNames of d. ii. Let fo be the result of performing InstantiateFunctionObject for d with argument env. iii. Perform envRec.InitializeBinding(fn, fo). --- 1588
global-switch-dflt-eval-global-existing-block-fn-no-init.js --- description: Does not re-initialize binding created by similar forms (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 771
global-switch-dflt-eval-global-existing-block-fn-update.js --- description: Variable-scoped binding is updated (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1377
global-switch-dflt-eval-global-existing-fn-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 807
global-switch-dflt-eval-global-existing-fn-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1394
global-switch-dflt-eval-global-existing-global-init.js --- description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1297
global-switch-dflt-eval-global-existing-global-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1537
global-switch-dflt-eval-global-existing-non-enumerable-global-init.js --- description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true). [...] --- 1435
global-switch-dflt-eval-global-existing-var-no-init.js --- description: Existing variable binding is not modified (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] a. If declaredFunctionOrVarNames does not contain F, then [...] --- 727
global-switch-dflt-eval-global-existing-var-update.js --- description: Variable-scoped binding is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1354
global-switch-dflt-eval-global-init.js --- description: Variable binding is initialized to `undefined` in outer scope (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] includes: [fnGlobalObject.js, propertyHelper.js] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] i. If varEnvRec is a global Environment Record, then i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true). [...] --- 1032
global-switch-dflt-eval-global-no-skip-try.js --- description: Extension is observed when creation of variable binding would not produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1554
global-switch-dflt-eval-global-skip-early-err-block.js --- description: Extension not observed when creation of variable binding would produce an early error (Block statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1329
global-switch-dflt-eval-global-skip-early-err-for-in.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1341
global-switch-dflt-eval-global-skip-early-err-for-of.js --- description: Extension not observed when creation of variable binding would produce an early error (for-of statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1334
global-switch-dflt-eval-global-skip-early-err-for.js --- description: Extension not observed when creation of variable binding would produce an early error (for statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1335
global-switch-dflt-eval-global-skip-early-err-switch.js --- description: Extension not observed when creation of variable binding would produce an early error (switch statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 1354
global-switch-dflt-eval-global-skip-early-err-try.js --- description: Extension is not observed when creation of variable binding would produce an early error (try statement) (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] B.3.5 VariableStatements in Catch Blocks [...] - It is a Syntax Error if any element of the BoundNames of CatchParameter also occurs in the VarDeclaredNames of Block unless CatchParameter is CatchParameter:BindingIdentifier and that element is only bound by a VariableStatement, the VariableDeclarationList of a for statement, or the ForBinding of a for-in statement. --- 1813
global-switch-dflt-eval-global-skip-early-err.js --- description: Extension not observed when creation of variable binding would produce an early error (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] --- 990
global-switch-dflt-eval-global-update.js --- description: Variable binding value is updated following evaluation (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope) esid: sec-web-compat-evaldeclarationinstantiation flags: [generated, noStrict] info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] b. When the FunctionDeclaration f is evaluated, perform the following steps in place of the FunctionDeclaration Evaluation algorithm provided in 14.1.21: i. Let genv be the running execution context's VariableEnvironment. ii. Let genvRec be genv's EnvironmentRecord. iii. Let benv be the running execution context's LexicalEnvironment. iv. Let benvRec be benv's EnvironmentRecord. v. Let fobj be ! benvRec.GetBindingValue(F, false). vi. Perform ? genvRec.SetMutableBinding(F, fobj, false). vii. Return NormalCompletion(empty). --- 1309
script-decl-lex-no-collision.js --- esid: sec-globaldeclarationinstantiation description: No let binding collision with existing var declaration due to eval(). info: | In strict mode: PerformEval ( x, strictCaller, direct ) [...] 16. If direct is true, then a. Let lexEnv be NewDeclarativeEnvironment(runningContext's LexicalEnvironment). [...] 18. If strictEval is true, set varEnv to lexEnv. In sloppy mode: GlobalDeclarationInstantiation ( script, env ) [...] 3. For each element name of lexNames, do a. If env.HasLexicalDeclaration(name) is true, throw a SyntaxError exception. b. Let hasRestrictedGlobal be ? env.HasRestrictedGlobalProperty(name). c. NOTE: Global var and function bindings (except those that are introduced by non-strict direct eval) are non-configurable and are therefore restricted global properties. d. If hasRestrictedGlobal is true, throw a SyntaxError exception. --- 1185
shell.js --- description: | Produce a reliable global object defines: [fnGlobalObject] --- 383
switch-case-decl-nostrict.js --- esid: sec-web-compat-evaldeclarationinstantiation description: > AnnexB extension not honored in strict mode, Function declaration in the `case` clause of a `switch` statement in eval code info: | B.3.3.3 Changes to EvalDeclarationInstantiation 1. If strict is false, then ... flags: [noStrict] --- 663
switch-dflt-decl-nostrict.js --- esid: sec-web-compat-evaldeclarationinstantiation description: > AnnexB extension not honored in strict mode, Function declaration in the `default` clause of a `switch` statement in eval code info: | B.3.3.3 Changes to EvalDeclarationInstantiation 1. If strict is false, then ... flags: [noStrict] --- 667
var-env-lower-lex-catch-non-strict.js --- esid: sec-variablestatements-in-catch-blocks description: Re-declaration of catch parameter info: | [...] This modified behaviour also applies to var and function declarations introduced by direct evals contained within the Block of a Catch clause. This change is accomplished by modifying the algorithm of 18.2.1.3 as follows: Step 5.d.ii.2.a.i is replaced by: i. If thisEnvRec is not the Environment Record for a Catch clause, throw a SyntaxError exception. flags: [noStrict] --- 979