1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-22 15:06:54 -05:00

perf(cli/proc_state): Get error source lines from memory (#15031)

This commit is contained in:
Nayeem Rahman 2022-07-11 19:43:47 +01:00 committed by GitHub
parent 687c712be3
commit 989c723130
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 33 deletions

View file

@ -663,22 +663,22 @@ impl SourceMapGetter for ProcState {
file_name: &str,
line_number: usize,
) -> Option<String> {
if let Ok(specifier) = resolve_url(file_name) {
self.file_fetcher.get_source(&specifier).map(|out| {
// Do NOT use .lines(): it skips the terminating empty line.
// (due to internally using_terminator() instead of .split())
let lines: Vec<&str> = out.source.split('\n').collect();
if line_number >= lines.len() {
format!(
"{} Couldn't format source line: Line {} is out of bounds (source may have changed at runtime)",
crate::colors::yellow("Warning"), line_number + 1,
)
} else {
lines[line_number].to_string()
}
})
let graph_data = self.graph_data.read();
let specifier = graph_data.follow_redirect(&resolve_url(file_name).ok()?);
let code = match graph_data.get(&specifier) {
Some(ModuleEntry::Module { code, .. }) => code,
_ => return None,
};
// Do NOT use .lines(): it skips the terminating empty line.
// (due to internally using_terminator() instead of .split())
let lines: Vec<&str> = code.split('\n').collect();
if line_number >= lines.len() {
Some(format!(
"{} Couldn't format source line: Line {} is out of bounds (source may have changed at runtime)",
crate::colors::yellow("Warning"), line_number + 1,
))
} else {
None
Some(lines[line_number].to_string())
}
}
}

View file

@ -2357,12 +2357,6 @@ itest!(long_data_url_formatting {
exit_code: 1,
});
itest!(eval_context_throw_with_conflicting_source {
args: "run eval_context_throw_with_conflicting_source.ts",
output: "eval_context_throw_with_conflicting_source.ts.out",
exit_code: 1,
});
itest!(eval_context_throw_dom_exception {
args: "run eval_context_throw_dom_exception.js",
output: "eval_context_throw_dom_exception.js.out",

View file

@ -1 +0,0 @@
throw new Error("foo");

View file

@ -1,6 +0,0 @@
// deno-lint-ignore no-explicit-any
const [, errorInfo] = (Deno as any).core.evalContext(
'/* aaaaaaaaaaaaaaaaa */ throw new Error("foo")',
new URL("eval_context_conflicting_source.ts", import.meta.url).href,
);
throw errorInfo.thrown;

View file

@ -1,5 +0,0 @@
[WILDCARD]error: Uncaught Error: foo
Warning Couldn't format source line: Column 31 is out of bounds (source may have changed at runtime)
at file:///[WILDCARD]/eval_context_conflicting_source.ts:1:31
at [WILDCARD]
at file:///[WILDCARD]/eval_context_throw_with_conflicting_source.ts:[WILDCARD]