Bug 1921345 - Remove global constructor from js/src/vm/SavedStacks.cpp r=arai
[gecko.git] / js / src / tests / test262 / annexB / language / eval-code / direct / func-switch-dflt-eval-func-no-skip-try.js
blobc9e3e361f584f3d01354a395622169a2c52ed746
1 // This file was procedurally generated from the following sources:
2 // - src/annex-b-fns/eval-func-no-skip-try.case
3 // - src/annex-b-fns/eval-func/direct-switch-dflt.template
4 /*---
5 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)
6 esid: sec-web-compat-evaldeclarationinstantiation
7 flags: [generated, noStrict]
8 info: |
9     B.3.3.3 Changes to EvalDeclarationInstantiation
11     [...]
12     ii. If replacing the FunctionDeclaration f with a VariableStatement that
13         has F as a BindingIdentifier would not produce any Early Errors for
14         body, then
15     [...]
17     B.3.5 VariableStatements in Catch Blocks
19     [...]
20     - It is a Syntax Error if any element of the BoundNames of CatchParameter
21       also occurs in the VarDeclaredNames of Block unless CatchParameter is
22       CatchParameter:BindingIdentifier and that element is only bound by a
23       VariableStatement, the VariableDeclarationList of a for statement, or the
24       ForBinding of a for-in statement.
25 ---*/
27 (function() {
28   eval(
29     'assert.sameValue(\
30       f, undefined, "Initialized binding created prior to evaluation"\
31     );\
32     \
33     try {\
34       throw null;\
35     } catch (f) {switch (1) {' +
36     '  default:' +
37     '    function f() { return 123; }' +
38     '}\
39     }\
40     \
41     assert.sameValue(\
42       typeof f,\
43       "function",\
44       "binding value is updated following evaluation"\
45     );\
46     assert.sameValue(f(), 123);'
47   );
48 }());
50 reportCompare(0, 0);