diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2022-07-11 19:43:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-11 20:43:47 +0200 |
commit | 989c72313078e71b60e22902f8a3abc67d085187 (patch) | |
tree | 1d1b23447b566c2399884019354aa6ed7d78d675 /cli/proc_state.rs | |
parent | 687c712be3be5d36db08ef9726ce356d99511484 (diff) |
perf(cli/proc_state): Get error source lines from memory (#15031)
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index 7154693da..1a32b01a4 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -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()) } } } |