tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

scope-body-var-none.js (1720B)


      1 // Copyright (C) 2016 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
      5 description: No variable environment is created for the statement body
      6 info: |
      7    IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement
      8 
      9    [...]
     10    2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
     11       lexicalBinding, labelSet).
     12 
     13    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
     14 
     15    [...]
     16    5. Repeat
     17       [...]
     18       d. If lhsKind is either assignment or varBinding, then
     19          [...]
     20       e. Else,
     21          i. Assert: lhsKind is lexicalBinding.
     22          ii. Assert: lhs is a ForDeclaration.
     23          iii. Let iterationEnv be NewDeclarativeEnvironment(oldEnv).
     24          iv. Perform BindingInstantiation for lhs passing iterationEnv as the
     25              argument.
     26          v. Set the running execution context's LexicalEnvironment to
     27             iterationEnv.
     28          [...]
     29 features: [let]
     30 ---*/
     31 
     32 var probeBefore = function() { return x; };
     33 var probeExpr, probeDecl, probeBody;
     34 var x = 1;
     35 
     36 for (
     37    let [_, __ = probeDecl = function() { return x; }]
     38    of
     39    [[probeExpr = function() { return x; }]]
     40  )
     41  var x = 2, ___ = probeBody = function() { return x; };
     42 
     43 
     44 assert.sameValue(probeBefore(), 2, 'reference preceding statement');
     45 assert.sameValue(probeExpr(), 2, 'reference from AssignmentExpression');
     46 assert.sameValue(probeDecl(), 2, 'reference from ForDelaration');
     47 assert.sameValue(probeBody(), 2, 'reference from statement body');
     48 assert.sameValue(x, 2, 'reference following statement');
     49 
     50 reportCompare(0, 0);