mirror of
https://github.com/denoland/deno.git
synced 2025-01-18 11:53:59 -05:00
refactor: remove tsc/40_error_stack.js (#7673)
This commit removes cli/tsc/40_error_stack.js as it is not needed in TSC host. All errors originating in TSC are terminal and don't require source mapping hence we can rely on default stack traces provided by deno_core. Additionally tsc/06_util.js was removed and its code moved to tsc/99_main_compiler.js
This commit is contained in:
parent
fd1c913985
commit
83f53c6455
4 changed files with 35 additions and 294 deletions
|
@ -1,9 +1,3 @@
|
||||||
[WILDCARD]
|
[WILDCARD]
|
||||||
error: Uncaught TypeError: Cannot resolve extension for "[WILDCARD]config.json" with mediaType "Json".
|
error: Uncaught TypeError: Cannot resolve extension for "[WILDCARD]config.json" with mediaType "Json".
|
||||||
at getExtension ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
at new SourceFile ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
at Function.addToCache ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
at buildSourceFileCache ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
at compile ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
at tsCompilerOnMessage ([WILDCARD]99_main_compiler.js:[WILDCARD])
|
|
||||||
[WILDCARD]
|
[WILDCARD]
|
|
@ -1,59 +0,0 @@
|
||||||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
||||||
|
|
||||||
((window) => {
|
|
||||||
const core = Deno.core;
|
|
||||||
let logDebug = false;
|
|
||||||
let logSource = "JS";
|
|
||||||
|
|
||||||
function setLogDebug(debug, source) {
|
|
||||||
logDebug = debug;
|
|
||||||
if (source) {
|
|
||||||
logSource = source;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function log(...args) {
|
|
||||||
if (logDebug) {
|
|
||||||
const stringifiedArgs = args.map(JSON.stringify).join(" ");
|
|
||||||
core.print(`DEBUG ${logSource} - ${stringifiedArgs}\n`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class AssertionError extends Error {
|
|
||||||
constructor(msg) {
|
|
||||||
super(msg);
|
|
||||||
this.name = "AssertionError";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function assert(cond, msg = "Assertion failed.") {
|
|
||||||
if (!cond) {
|
|
||||||
throw new AssertionError(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function createResolvable() {
|
|
||||||
let resolve;
|
|
||||||
let reject;
|
|
||||||
const promise = new Promise((res, rej) => {
|
|
||||||
resolve = res;
|
|
||||||
reject = rej;
|
|
||||||
});
|
|
||||||
promise.resolve = resolve;
|
|
||||||
promise.reject = reject;
|
|
||||||
return promise;
|
|
||||||
}
|
|
||||||
|
|
||||||
function notImplemented() {
|
|
||||||
throw new Error("not implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
window.__bootstrap.util = {
|
|
||||||
log,
|
|
||||||
setLogDebug,
|
|
||||||
notImplemented,
|
|
||||||
createResolvable,
|
|
||||||
assert,
|
|
||||||
AssertionError,
|
|
||||||
};
|
|
||||||
})(this);
|
|
|
@ -1,224 +0,0 @@
|
||||||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
||||||
|
|
||||||
((window) => {
|
|
||||||
// Some of the code here is adapted directly from V8 and licensed under a BSD
|
|
||||||
// style license available here: https://github.com/v8/v8/blob/24886f2d1c565287d33d71e4109a53bf0b54b75c/LICENSE.v8
|
|
||||||
const assert = window.__bootstrap.util.assert;
|
|
||||||
|
|
||||||
function patchCallSite(callSite, location) {
|
|
||||||
return {
|
|
||||||
getThis() {
|
|
||||||
return callSite.getThis();
|
|
||||||
},
|
|
||||||
getTypeName() {
|
|
||||||
return callSite.getTypeName();
|
|
||||||
},
|
|
||||||
getFunction() {
|
|
||||||
return callSite.getFunction();
|
|
||||||
},
|
|
||||||
getFunctionName() {
|
|
||||||
return callSite.getFunctionName();
|
|
||||||
},
|
|
||||||
getMethodName() {
|
|
||||||
return callSite.getMethodName();
|
|
||||||
},
|
|
||||||
getFileName() {
|
|
||||||
return location.fileName;
|
|
||||||
},
|
|
||||||
getLineNumber() {
|
|
||||||
return location.lineNumber;
|
|
||||||
},
|
|
||||||
getColumnNumber() {
|
|
||||||
return location.columnNumber;
|
|
||||||
},
|
|
||||||
getEvalOrigin() {
|
|
||||||
return callSite.getEvalOrigin();
|
|
||||||
},
|
|
||||||
isToplevel() {
|
|
||||||
return callSite.isToplevel();
|
|
||||||
},
|
|
||||||
isEval() {
|
|
||||||
return callSite.isEval();
|
|
||||||
},
|
|
||||||
isNative() {
|
|
||||||
return callSite.isNative();
|
|
||||||
},
|
|
||||||
isConstructor() {
|
|
||||||
return callSite.isConstructor();
|
|
||||||
},
|
|
||||||
isAsync() {
|
|
||||||
return callSite.isAsync();
|
|
||||||
},
|
|
||||||
isPromiseAll() {
|
|
||||||
return callSite.isPromiseAll();
|
|
||||||
},
|
|
||||||
getPromiseIndex() {
|
|
||||||
return callSite.getPromiseIndex();
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keep in sync with `cli/fmt_errors.rs`.
|
|
||||||
function formatLocation(callSite) {
|
|
||||||
if (callSite.isNative()) {
|
|
||||||
return "native";
|
|
||||||
}
|
|
||||||
|
|
||||||
let result = "";
|
|
||||||
|
|
||||||
const fileName = callSite.getFileName();
|
|
||||||
|
|
||||||
if (fileName) {
|
|
||||||
result += fileName;
|
|
||||||
} else {
|
|
||||||
if (callSite.isEval()) {
|
|
||||||
const evalOrigin = callSite.getEvalOrigin();
|
|
||||||
assert(evalOrigin != null);
|
|
||||||
result += `${evalOrigin}, `;
|
|
||||||
}
|
|
||||||
result += "<anonymous>";
|
|
||||||
}
|
|
||||||
|
|
||||||
const lineNumber = callSite.getLineNumber();
|
|
||||||
if (lineNumber != null) {
|
|
||||||
result += `:${lineNumber}`;
|
|
||||||
|
|
||||||
const columnNumber = callSite.getColumnNumber();
|
|
||||||
if (columnNumber != null) {
|
|
||||||
result += `:${columnNumber}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keep in sync with `cli/fmt_errors.rs`.
|
|
||||||
function formatCallSite(callSite) {
|
|
||||||
let result = "";
|
|
||||||
const functionName = callSite.getFunctionName();
|
|
||||||
|
|
||||||
const isTopLevel = callSite.isToplevel();
|
|
||||||
const isAsync = callSite.isAsync();
|
|
||||||
const isPromiseAll = callSite.isPromiseAll();
|
|
||||||
const isConstructor = callSite.isConstructor();
|
|
||||||
const isMethodCall = !(isTopLevel || isConstructor);
|
|
||||||
|
|
||||||
if (isAsync) {
|
|
||||||
result += "async ";
|
|
||||||
}
|
|
||||||
if (isPromiseAll) {
|
|
||||||
result += `Promise.all (index ${callSite.getPromiseIndex()})`;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if (isMethodCall) {
|
|
||||||
const typeName = callSite.getTypeName();
|
|
||||||
const methodName = callSite.getMethodName();
|
|
||||||
|
|
||||||
if (functionName) {
|
|
||||||
if (typeName) {
|
|
||||||
if (!functionName.startsWith(typeName)) {
|
|
||||||
result += `${typeName}.`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
result += functionName;
|
|
||||||
if (methodName) {
|
|
||||||
if (!functionName.endsWith(methodName)) {
|
|
||||||
result += ` [as ${methodName}]`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (typeName) {
|
|
||||||
result += `${typeName}.`;
|
|
||||||
}
|
|
||||||
if (methodName) {
|
|
||||||
result += methodName;
|
|
||||||
} else {
|
|
||||||
result += "<anonymous>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (isConstructor) {
|
|
||||||
result += "new ";
|
|
||||||
if (functionName) {
|
|
||||||
result += functionName;
|
|
||||||
} else {
|
|
||||||
result += "<anonymous>";
|
|
||||||
}
|
|
||||||
} else if (functionName) {
|
|
||||||
result += functionName;
|
|
||||||
} else {
|
|
||||||
result += formatLocation(callSite);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += ` (${formatLocation(callSite)})`;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function evaluateCallSite(callSite) {
|
|
||||||
return {
|
|
||||||
this: callSite.getThis(),
|
|
||||||
typeName: callSite.getTypeName(),
|
|
||||||
function: callSite.getFunction(),
|
|
||||||
functionName: callSite.getFunctionName(),
|
|
||||||
methodName: callSite.getMethodName(),
|
|
||||||
fileName: callSite.getFileName(),
|
|
||||||
lineNumber: callSite.getLineNumber(),
|
|
||||||
columnNumber: callSite.getColumnNumber(),
|
|
||||||
evalOrigin: callSite.getEvalOrigin(),
|
|
||||||
isToplevel: callSite.isToplevel(),
|
|
||||||
isEval: callSite.isEval(),
|
|
||||||
isNative: callSite.isNative(),
|
|
||||||
isConstructor: callSite.isConstructor(),
|
|
||||||
isAsync: callSite.isAsync(),
|
|
||||||
isPromiseAll: callSite.isPromiseAll(),
|
|
||||||
promiseIndex: callSite.getPromiseIndex(),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function prepareStackTrace(
|
|
||||||
error,
|
|
||||||
callSites,
|
|
||||||
) {
|
|
||||||
const mappedCallSites = callSites.map(
|
|
||||||
(callSite) => {
|
|
||||||
const fileName = callSite.getFileName();
|
|
||||||
const lineNumber = callSite.getLineNumber();
|
|
||||||
const columnNumber = callSite.getColumnNumber();
|
|
||||||
if (fileName && lineNumber != null && columnNumber != null) {
|
|
||||||
return patchCallSite(
|
|
||||||
callSite,
|
|
||||||
{
|
|
||||||
fileName,
|
|
||||||
lineNumber,
|
|
||||||
columnNumber,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return callSite;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
Object.defineProperties(error, {
|
|
||||||
__callSiteEvals: { value: [], configurable: true },
|
|
||||||
});
|
|
||||||
const formattedCallSites = [];
|
|
||||||
for (const callSite of mappedCallSites) {
|
|
||||||
error.__callSiteEvals.push(Object.freeze(evaluateCallSite(callSite)));
|
|
||||||
formattedCallSites.push(formatCallSite(callSite));
|
|
||||||
}
|
|
||||||
Object.freeze(error.__callSiteEvals);
|
|
||||||
return (
|
|
||||||
`${error.name}: ${error.message}\n` +
|
|
||||||
formattedCallSites
|
|
||||||
.map((s) => ` at ${s}`)
|
|
||||||
.join("\n")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setPrepareStackTrace(ErrorConstructor) {
|
|
||||||
ErrorConstructor.prepareStackTrace = prepareStackTrace;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.__bootstrap.errorStack = {
|
|
||||||
setPrepareStackTrace,
|
|
||||||
};
|
|
||||||
})(this);
|
|
|
@ -18,11 +18,42 @@ delete Object.prototype.__proto__;
|
||||||
|
|
||||||
((window) => {
|
((window) => {
|
||||||
const core = window.Deno.core;
|
const core = window.Deno.core;
|
||||||
const { assert, log, notImplemented } = window.__bootstrap.util;
|
|
||||||
const util = window.__bootstrap.util;
|
|
||||||
const errorStack = window.__bootstrap.errorStack;
|
|
||||||
const errors = window.__bootstrap.errors.errors;
|
const errors = window.__bootstrap.errors.errors;
|
||||||
|
|
||||||
|
let logDebug = false;
|
||||||
|
let logSource = "JS";
|
||||||
|
|
||||||
|
function setLogDebug(debug, source) {
|
||||||
|
logDebug = debug;
|
||||||
|
if (source) {
|
||||||
|
logSource = source;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function log(...args) {
|
||||||
|
if (logDebug) {
|
||||||
|
const stringifiedArgs = args.map(JSON.stringify).join(" ");
|
||||||
|
core.print(`DEBUG ${logSource} - ${stringifiedArgs}\n`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssertionError extends Error {
|
||||||
|
constructor(msg) {
|
||||||
|
super(msg);
|
||||||
|
this.name = "AssertionError";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function assert(cond, msg = "Assertion failed.") {
|
||||||
|
if (!cond) {
|
||||||
|
throw new AssertionError(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function notImplemented() {
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {import("../dts/typescript").DiagnosticRelatedInformation} diagnostic
|
* @param {import("../dts/typescript").DiagnosticRelatedInformation} diagnostic
|
||||||
*/
|
*/
|
||||||
|
@ -1303,8 +1334,7 @@ delete Object.prototype.__proto__;
|
||||||
// are ready. The response should be a `StartRes` message containing the CLI
|
// are ready. The response should be a `StartRes` message containing the CLI
|
||||||
// args and other info.
|
// args and other info.
|
||||||
const s = core.jsonOpSync("op_start");
|
const s = core.jsonOpSync("op_start");
|
||||||
util.setLogDebug(s.debugFlag, source);
|
setLogDebug(s.debugFlag, source);
|
||||||
errorStack.setPrepareStackTrace(Error);
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue