| //@ runNoJIT |
| |
| function stackTraceDescription(stackFrame) { |
| let indexOfAt = stackFrame.indexOf('@') |
| let indexOfLastSlash = stackFrame.lastIndexOf('/'); |
| if (indexOfLastSlash == -1) |
| indexOfLastSlash = indexOfAt |
| let functionName = stackFrame.substring(0, indexOfAt); |
| let fileName = stackFrame.substring(indexOfLastSlash + 1); |
| return functionName + " at " + fileName; |
| } |
| |
| function foo(j) { |
| for (let i = 0; i < 20; i++) { |
| i--; |
| i++; |
| } |
| foo(j + 1); |
| } |
| |
| let error = null; |
| try { |
| foo(10); |
| } catch(e) { |
| error = e; |
| } |
| |
| if (!error) |
| throw new Error("No exception!"); |
| |
| let frame = error.stack.split("\n")[0]; |
| let description = stackTraceDescription(frame); |
| if (description.indexOf(".js:18") < 0) |
| throw new Error("Bad location: '" + description + "'"); |
| |