tor-browser

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

var-env-lower-lex-non-strict.js (1233B)


      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-evaldeclarationinstantiation
      5 description: Variable collision with lexical binding in lower scope
      6 info: |
      7    [...]
      8    5. If strict is false, then
      9       [...]
     10       d. Repeat while thisLex is not the same as varEnv,
     11          i. Let thisEnvRec be thisLex's EnvironmentRecord.
     12          ii. If thisEnvRec is not an object Environment Record, then
     13              1. NOTE: The environment of with statements cannot contain any
     14                 lexical declaration so it doesn't need to be checked for
     15                 var/let hoisting conflicts.
     16              2. For each name in varNames, do
     17                 a. If thisEnvRec.HasBinding(name) is true, then
     18                    i. Throw a SyntaxError exception.
     19                 b. NOTE: A direct eval will not hoist var declaration over a
     20                    like-named lexical declaration.
     21          iii. Let thisLex be thisLex's outer environment reference.
     22    [...]
     23 flags: [noStrict]
     24 features: [let]
     25 ---*/
     26 
     27 assert.throws(SyntaxError, function() {
     28  {
     29    let x;
     30    {
     31      eval('var x;');
     32    }
     33  }
     34 });
     35 
     36 reportCompare(0, 0);