Bug 1892041 - Part 1: Update test262 features. r=spidermonkey-reviewers,dminor
[gecko.git] / js / src / tests / test262 / annexB / language / eval-code / direct / func-block-decl-eval-func-no-skip-try.js
blob4f4e34e5fe5ebc423fd2c213706529e5c21f1942
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-block.template
4 /*---
5 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)
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) {{ function f() { return 123; } }}\
36     \
37     assert.sameValue(\
38       typeof f,\
39       "function",\
40       "binding value is updated following evaluation"\
41     );\
42     assert.sameValue(f(), 123);'
43   );
44 }());
46 reportCompare(0, 0);