summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/statements/function/scope-param-elem-var-close.js
blob: 4917660fe5478bbc26feb5f9dc7e9a15ad25d701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-functiondeclarationinstantiation
description: >
    sloppy direct evals in params introduce vars
info: |
    [...]
    20. Else,
      a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
      b. Let calleeEnv be the LexicalEnvironment of calleeContext.
      c. Let env be NewDeclarativeEnvironment(calleeEnv).
      d. Let envRec be env's EnvironmentRecord.
    [...]
flags: [noStrict]
---*/

var x = 'outside';
var probe1, probe2, probeBody;

function f(
    _ = (eval('var x = "inside";'), probe1 = function() { return x; }),
    __ = probe2 = function() { return x; }
  ) {
  probeBody = function() { return x; };
}
f();

assert.sameValue(probe1(), 'inside');
assert.sameValue(probe2(), 'inside');
assert.sameValue(probeBody(), 'inside');

reportCompare(0, 0);