tor-browser

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

scope-body-lex-open.js (1612B)


      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-statement-runtime-semantics-labelledevaluation
      5 description: >
      6    Creation of new lexical environment for the initial evaluation of the
      7    statement body
      8 info: |
      9    [...]
     10    11. Let bodyResult be ForBodyEvaluation(the first Expression, the second
     11        Expression, Statement, perIterationLets, labelSet).
     12    [...]
     13 
     14    13.7.4.8 Runtime Semantics: ForBodyEvaluation
     15 
     16    [...]
     17    2. Perform ? CreatePerIterationEnvironment(perIterationBindings).
     18    3. Repeat
     19       [...]
     20       b. Let result be the result of evaluating stmt.
     21       [...]
     22     [...]
     23 
     24    13.7.4.9 Runtime Semantics: CreatePerIterationEnvironment
     25 
     26    1. If perIterationBindings has any elements, then
     27       [...]
     28       e. Let thisIterationEnv be NewDeclarativeEnvironment(outer).
     29       f. Let thisIterationEnvRec be thisIterationEnv's EnvironmentRecord.
     30 features: [let]
     31 ---*/
     32 
     33 var probeBefore, probeTest, probeIncr, probeBody;
     34 var run = true;
     35 
     36 for (
     37    let x = 'outside', _ = probeBefore = function() { return x; };
     38    run && (x = 'inside', probeTest = function() { return x; });
     39    probeIncr = function() { return x; }
     40  )
     41  probeBody = function() { return x; }, run = false;
     42 
     43 assert.sameValue(probeBefore(), 'outside');
     44 assert.sameValue(probeTest(), 'inside', 'reference from "test" position');
     45 assert.sameValue(probeBody(), 'inside', 'reference from statement body');
     46 assert.sameValue(probeIncr(), 'inside', 'reference from "increment" position');
     47 
     48 reportCompare(0, 0);