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 }