tor-browser

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

ergonomic-1.js (1363B)


      1 class Base {
      2  constructor(o) {
      3    return o;
      4  }
      5 }
      6 
      7 class A extends Base {
      8  #x = 12;
      9  #y = 13;
     10  static has(o) {
     11    return A.evalStr(o, '#x in o');
     12  }
     13 
     14  static evalStr(o, str) {
     15    return eval(str);
     16  }
     17 }
     18 
     19 var obj = {};
     20 assertEq(A.has(obj), false);
     21 new A(obj);
     22 assertEq(A.has(obj), true);
     23 
     24 A.evalStr(obj, `#x in o in o`)  // 'false' in o
     25 
     26 function assertSyntaxError(functionText) {
     27  let threw = false;
     28  let exception = undefined;
     29  try {
     30    A.evalStr({}, functionText)
     31  } catch (e) {
     32    exception = e;
     33    threw = true;
     34  }
     35  assertEq(threw, true);
     36  assertEq(exception instanceof SyntaxError, true);
     37 }
     38 
     39 assertSyntaxError(`#x`);
     40 assertSyntaxError(`#x == undefined`);
     41 assertSyntaxError(`1 + #x in o`)
     42 assertSyntaxError(`#z in o`);
     43 
     44 assertSyntaxError(`for (#x in o) { return 1;}`)
     45 assertSyntaxError(`!#x in o`)
     46 assertSyntaxError(`+#x in o`)
     47 assertSyntaxError(`-#x in o`)
     48 assertSyntaxError(`~#x in o`)
     49 assertSyntaxError(`void #x in o`)
     50 assertSyntaxError(`typeof #x in o`)
     51 assertSyntaxError(`++#x in o`)
     52 assertSyntaxError(`--#x in o`)
     53 
     54 assertSyntaxError(`#x in #y in o`)
     55 assertSyntaxError(`{} instanceof #x in o`)
     56 assertSyntaxError(`10 > #x in o`)
     57 var threw = true
     58 try {
     59  eval(`class Async {
     60    #x;
     61    async func(o) {
     62      await #x in o;
     63    }
     64  }`);
     65  threw = false;
     66 } catch (e) {
     67  assertEq(e instanceof SyntaxError, true);
     68 }
     69 assertEq(threw, true);