tor-browser

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

error.js (2738B)


      1 load(libdir + 'asserts.js');
      2 
      3 let source = `class C {
      4    x =
      5 }`;
      6 assertErrorMessage(() => Function(source), SyntaxError, /./);
      7 
      8 source = `class C {
      9    -2;
     10    -2 = 2;
     11 }`;
     12 assertErrorMessage(() => Function(source), SyntaxError, /./);
     13 
     14 source = `class C {
     15    x += 2;
     16 }`;
     17 assertErrorMessage(() => Function(source), SyntaxError, /./);
     18 
     19 source = `class C {
     20    #2;
     21 }`;
     22 assertErrorMessage(() => Function(source), SyntaxError, /./);
     23 
     24 source = `class C {
     25    #["h" + "i"];
     26 }`;
     27 assertErrorMessage(() => Function(source), SyntaxError, /./);
     28 
     29 source = `class C {
     30    #"hi";
     31 }`;
     32 assertErrorMessage(() => Function(source), SyntaxError, /./);
     33 
     34 source = `class C {
     35    constructor;
     36 }`;
     37 assertErrorMessage(() => Function(source), SyntaxError, /./);
     38 
     39 source = `class C {
     40    "constructor";
     41 }`;
     42 assertErrorMessage(() => Function(source), SyntaxError, /./);
     43 
     44 source = `class C {
     45    x = arguments;
     46 }`;
     47 assertErrorMessage(() => Function(source), SyntaxError, /./);
     48 
     49 source = `class C {
     50    x = super();
     51 }`;
     52 assertErrorMessage(() => Function(source), SyntaxError, /./);
     53 
     54 source = `function f() {
     55 class C {
     56    #"should still throw error during lazy parse";
     57 }
     58 }`;
     59 assertErrorMessage(() => Function(source), SyntaxError, /./);
     60 
     61 source = `#outside;`;
     62 assertErrorMessage(() => eval(source), SyntaxError, /./);
     63 
     64 source = `class C {
     65    x = super();
     66 }`;
     67 assertErrorMessage(() => Function(source), SyntaxError, /./);
     68 
     69 source = `class C {
     70    x = sper();
     71 }`;
     72 eval(source);
     73 
     74 
     75 // The following test cases fail to parse because ASI does not happen if the
     76 // next token might be valid, even if it leads to a SyntaxError further down
     77 // the road.
     78 
     79 source = `class C {
     80    x = 0
     81    ["computedMethodName"](){}
     82 }`;
     83 assertThrowsInstanceOf(() => Function(source), SyntaxError);
     84 
     85 source = `class C {
     86    x = 0
     87    *f(){}
     88 }`;
     89 assertThrowsInstanceOf(() => Function(source), SyntaxError);
     90 
     91 
     92 // The following test cases fail to parse because ASI doesn't happen without a
     93 // newline.
     94 
     95 source = `class C { x y }`;
     96 assertThrowsInstanceOf(() => Function(source), SyntaxError);
     97 
     98 source = `class C { if var }  // identifiers that look like keywords`;
     99 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    100 
    101 source = `class C { x = 1 y }`;
    102 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    103 
    104 source = `class C { x async f() {} }`;
    105 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    106 
    107 source = `class C { x static f() {} }`;
    108 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    109 
    110 source = `class C { field1 static field2 }`;
    111 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    112 
    113 source = `class C { x get f() {} }`;
    114 assertThrowsInstanceOf(() => Function(source), SyntaxError);
    115 
    116 if (typeof reportCompare === 'function') reportCompare(true, true);