diff options
Diffstat (limited to 'core/02_error.js')
-rw-r--r-- | core/02_error.js | 104 |
1 files changed, 51 insertions, 53 deletions
diff --git a/core/02_error.js b/core/02_error.js index c6b808169..a7d5d0ee2 100644 --- a/core/02_error.js +++ b/core/02_error.js @@ -71,7 +71,7 @@ } // Keep in sync with `cli/fmt_errors.rs`. - function formatLocation(callSite, formatFileNameFn) { + function formatLocation(callSite) { if (callSite.isNative()) { return "native"; } @@ -81,7 +81,7 @@ const fileName = callSite.getFileName(); if (fileName) { - result += formatFileNameFn(fileName); + result += core.opSync("op_format_file_name", fileName); } else { if (callSite.isEval()) { const evalOrigin = callSite.getEvalOrigin(); @@ -107,7 +107,7 @@ } // Keep in sync with `cli/fmt_errors.rs`. - function formatCallSite(callSite, formatFileNameFn) { + function formatCallSite(callSite) { let result = ""; const functionName = callSite.getFunctionName(); @@ -160,11 +160,11 @@ } else if (functionName) { result += functionName; } else { - result += formatLocation(callSite, formatFileNameFn); + result += formatLocation(callSite); return result; } - result += ` (${formatLocation(callSite, formatFileNameFn)})`; + result += ` (${formatLocation(callSite)})`; return result; } @@ -189,57 +189,55 @@ }; } - /** Returns a function that can be used as `Error.prepareStackTrace`. */ - function createPrepareStackTrace(formatFileNameFn) { - return function prepareStackTrace( - error, - callSites, - ) { - const mappedCallSites = ArrayPrototypeMap(callSites, (callSite) => { - const fileName = callSite.getFileName(); - const lineNumber = callSite.getLineNumber(); - const columnNumber = callSite.getColumnNumber(); - if (fileName && lineNumber != null && columnNumber != null) { - return patchCallSite( - callSite, - core.applySourceMap({ - fileName, - lineNumber, - columnNumber, - }), - ); - } - return callSite; - }); - ObjectDefineProperties(error, { - __callSiteEvals: { value: [], configurable: true }, - }); - const formattedCallSites = []; - for (const callSite of mappedCallSites) { - ArrayPrototypePush(error.__callSiteEvals, evaluateCallSite(callSite)); - ArrayPrototypePush( - formattedCallSites, - formatCallSite(callSite, formatFileNameFn), + /** A function that can be used as `Error.prepareStackTrace`. */ + function prepareStackTrace( + error, + callSites, + ) { + const mappedCallSites = ArrayPrototypeMap(callSites, (callSite) => { + const fileName = callSite.getFileName(); + const lineNumber = callSite.getLineNumber(); + const columnNumber = callSite.getColumnNumber(); + if (fileName && lineNumber != null && columnNumber != null) { + return patchCallSite( + callSite, + core.applySourceMap({ + fileName, + lineNumber, + columnNumber, + }), ); } - const message = error.message !== undefined ? error.message : ""; - const name = error.name !== undefined ? error.name : "Error"; - let messageLine; - if (name != "" && message != "") { - messageLine = `${name}: ${message}`; - } else if ((name || message) != "") { - messageLine = name || message; - } else { - messageLine = ""; - } - return messageLine + - ArrayPrototypeJoin( - ArrayPrototypeMap(formattedCallSites, (s) => `\n at ${s}`), - "", - ); - }; + return callSite; + }); + ObjectDefineProperties(error, { + __callSiteEvals: { value: [], configurable: true }, + }); + const formattedCallSites = []; + for (const callSite of mappedCallSites) { + ArrayPrototypePush(error.__callSiteEvals, evaluateCallSite(callSite)); + ArrayPrototypePush( + formattedCallSites, + formatCallSite(callSite), + ); + } + const message = error.message !== undefined ? error.message : ""; + const name = error.name !== undefined ? error.name : "Error"; + let messageLine; + if (name != "" && message != "") { + messageLine = `${name}: ${message}`; + } else if ((name || message) != "") { + messageLine = name || message; + } else { + messageLine = ""; + } + return messageLine + + ArrayPrototypeJoin( + ArrayPrototypeMap(formattedCallSites, (s) => `\n at ${s}`), + "", + ); } - ObjectAssign(globalThis.__bootstrap.core, { createPrepareStackTrace }); + ObjectAssign(globalThis.__bootstrap.core, { prepareStackTrace }); ObjectFreeze(globalThis.__bootstrap.core); })(this); |