tor-browser

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

for-in-with-assignments.js (2283B)


      1 /*
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/licenses/publicdomain/
      4 */
      5 
      6 var gTestfile = "for-in-with-assignments.js";
      7 var BUGNUMBER = 1164741;
      8 var summary = "Parse |for (var ... = ... in ...)|."
      9 
     10 print(BUGNUMBER + ": " + summary);
     11 
     12 /**************
     13 * BEGIN TEST *
     14 **************/
     15 
     16 // This is a total grab-bag of junk originally in tests changed when this
     17 // syntax was removed.  Leaving it all in one file will make it easier to
     18 // eventually remove.  Avert your eyes!
     19 // TC39 has revived this syntax for ES2017 - "What is dead may never die."
     20 
     21 if (typeof Reflect !== "undefined" && Reflect.parse)
     22  Reflect.parse("for (var x = 3 in []) { }");
     23 
     24 /******************************************************************************/
     25 
     26 function testQ() {
     27  try {
     28    for (var i = 0 in this) throw p;
     29  } catch (e) {
     30    if (i !== 94)
     31      return "what";
     32  }
     33 }
     34 testQ();
     35 
     36 /******************************************************************************/
     37 
     38 function f3(i,o){for(var x=i in o)parseInt(o[x]); return x}
     39 function f4(i,o){with(this)for(var x=i in o)parseInt(o[x]); return x}
     40 
     41 assertEq(f3(42, []), 42);
     42 assertEq(f3(42, ['first']), "0");
     43 assertEq(f4(42, []), 42);
     44 assertEq(f4(42, ['first']), "0");
     45 
     46 /******************************************************************************/
     47 
     48 function SetLangHead(l){
     49  with(p){
     50    for(var i=0 in x)
     51      if(getElementById("TxtH"+i)!=undefined)
     52        parseInt('huh');
     53  }
     54 }
     55 x=[0,1,2,3];
     56 p={getElementById: function (id){
     57  if (typeof dis === "function") {
     58    dis(SetLangHead);
     59  }
     60  return undefined;
     61 }};
     62 SetLangHead(1);
     63 
     64 /******************************************************************************/
     65 
     66 (function(){for(var x = arguments in []){} function x(){}})();
     67 
     68 /******************************************************************************/
     69 
     70 with (0)
     71  for (var b = 0 in 0);  // don't assert in parser
     72 
     73 /******************************************************************************/
     74 
     75 function* g1() {
     76  for (var x = yield in {}) ;
     77 }
     78 var it = g1();
     79 assertEq(it.next().done, false);
     80 assertEq(it.next().done, true);
     81 
     82 /******************************************************************************/
     83 
     84 if (typeof reportCompare === "function")
     85  reportCompare(true, true);
     86 
     87 print("Tests complete");