switch-case-func-init.js (1091B)
1 // This file was procedurally generated from the following sources: 2 // - src/annex-b-fns/func-init.case 3 // - src/annex-b-fns/func/switch-case.template 4 /*--- 5 description: Variable binding is initialized to `undefined` in outer scope (Function declaration in the `case` clause of a `switch` statement in function scope) 6 esid: sec-web-compat-functiondeclarationinstantiation 7 flags: [generated, noStrict] 8 info: | 9 B.3.3.1 Changes to FunctionDeclarationInstantiation 10 11 [...] 12 2. If instantiatedVarNames does not contain F, then 13 a. Perform ! varEnvRec.CreateMutableBinding(F, false). 14 b. Perform varEnvRec.InitializeBinding(F, undefined). 15 c. Append F to instantiatedVarNames. 16 [...] 17 ---*/ 18 var init, changed; 19 20 (function() { 21 init = f; 22 f = 123; 23 changed = f; 24 25 switch (1) { 26 case 1: 27 function f() { } 28 } 29 30 31 }()); 32 33 assert.sameValue(init, undefined, 'binding is initialized to `undefined`'); 34 assert.sameValue(changed, 123, 'binding is mutable'); 35 assert.throws(ReferenceError, function() { 36 f; 37 }, 'global binding is not created'); 38 39 reportCompare(0, 0);