tor-browser

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

Object-errorLineNumber-errorColumnNumber.js (2067B)


      1 // Debugger.Object.prototype.{errorLineNumber,errorColumnNumber} return the
      2 // line number and column number associated with some error object.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var dbg = new Debugger();
      6 var gw = dbg.addDebuggee(g);
      7 
      8 var syntaxError = gw.executeInGlobal("\nlet a, a;").throw;
      9 assertEq(syntaxError.errorLineNumber, 2);
     10 assertEq(syntaxError.errorColumnNumber, 8);
     11 
     12 var typeError = gw.executeInGlobal("\n1 + f();").throw;
     13 assertEq(typeError.errorLineNumber, 2);
     14 assertEq(typeError.errorColumnNumber, 5);
     15 
     16 var typeError2 = gw.executeInGlobal("\nconsole.log(1, f());").throw;
     17 assertEq(typeError2.errorLineNumber, 2);
     18 assertEq(typeError2.errorColumnNumber, 16);
     19 
     20 // Custom errors have no line/column numbers .
     21 var customError = gw.executeInGlobal("\nthrow 1;").throw;
     22 assertEq(customError.errorLineNumber, undefined);
     23 assertEq(customError.errorColumnNumber, undefined);
     24 
     25 customError = gw.executeInGlobal("\nthrow { errorLineNumber: 10, errorColumnNumber: 20 };").throw;
     26 assertEq(customError.errorLineNumber, undefined);
     27 assertEq(customError.errorColumnNumber, undefined);
     28 
     29 customError = gw.executeInGlobal("\nthrow { lineNumber: 10, columnNumber: 20 };").throw;
     30 assertEq(customError.errorLineNumber, undefined);
     31 assertEq(customError.errorColumnNumber, undefined);
     32 
     33 // Ensure that the method works across globals.
     34 g.eval(`var g = newGlobal({newCompartment: true});
     35        g.eval('var err; \\n' +
     36               'try {\\n' +
     37               '  f();\\n' +
     38               '} catch (e) {\\n' +
     39               '  err = e;\\n' +
     40               '}');
     41        var err2 = g.err;`);
     42 var otherGlobalError = gw.executeInGlobal("throw err2").throw;
     43 assertEq(otherGlobalError.errorLineNumber, 3);
     44 assertEq(otherGlobalError.errorColumnNumber, 3);
     45 
     46 // Ensure that non-error objects return undefined.
     47 const Args = [
     48    "1",
     49    "'blah'",
     50    "({})",
     51    "[]",
     52    "() => 1"
     53 ]
     54 
     55 for (let arg of Args) {
     56    let nonError = gw.executeInGlobal(`${arg}`).return;
     57    assertEq(nonError.errorLineNumber, undefined);
     58    assertEq(nonError.errorColumnNumber, undefined);
     59 }