tor-browser

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

eval-spread-empty-leading.js (1090B)


      1 // Copyright (C) 2017 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-function-calls-runtime-semantics-evaluation
      6 description: >
      7  Direct eval call with empty leading spread.
      8 info: |
      9  12.3.4.1 Runtime Semantics: Evaluation
     10    ...
     11    3. If Type(ref) is Reference and IsPropertyReference(ref) is false and GetReferencedName(ref) is "eval", then
     12      a. If SameValue(func, %eval%) is true, then
     13        i. Let argList be ? ArgumentListEvaluation(Arguments).
     14        ii. If argList has no elements, return undefined.
     15        iii. Let evalText be the first element of argList.
     16        ...
     17 
     18 features: [Symbol.iterator]
     19 ---*/
     20 
     21 var nextCount = 0;
     22 var iter = {};
     23 iter[Symbol.iterator] = function() {
     24  return {
     25    next: function() {
     26      var i = nextCount++;
     27      return {done: true, value: undefined};
     28    }
     29  };
     30 };
     31 
     32 var x = "global";
     33 
     34 (function() {
     35  var x = "local";
     36  eval(...iter, "x = 0;");
     37  assert.sameValue(x, 0);
     38 })();
     39 
     40 assert.sameValue(x, "global");
     41 assert.sameValue(nextCount, 1);
     42 
     43 reportCompare(0, 0);