summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2024-04-08 19:45:20 +0100
committerGitHub <noreply@github.com>2024-04-08 19:45:20 +0100
commit3c346c8ea6aa888475c19d512ddd4c247c00b1ea (patch)
treed7e4e7e3369c79ad569cca3c982ead766f2d0189
parent9752a153ea69328acb6a5ca179c4b8cf7780c894 (diff)
perf(lsp): don't pass remote modules as tsc roots (#23259)
-rw-r--r--cli/lsp/documents.rs7
-rw-r--r--cli/lsp/tsc.rs4
-rw-r--r--cli/tsc/99_main_compiler.js2
3 files changed, 11 insertions, 2 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index fceb3fb4b..6a4832eae 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -1146,6 +1146,13 @@ impl Documents {
}
}
+ pub fn is_open(&self, specifier: &ModuleSpecifier) -> bool {
+ let Some(specifier) = self.resolve_specifier(specifier) else {
+ return false;
+ };
+ self.open_docs.contains_key(&specifier)
+ }
+
/// Return a collection of documents that are contained in the document store
/// based on the provided filter.
pub fn documents(&self, filter: DocumentsFilter) -> Vec<Arc<Document>> {
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 9c27f3f21..923a0d443 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -4064,7 +4064,9 @@ fn op_script_names(state: &mut OpState) -> Vec<String> {
if seen.insert(specifier.as_str()) {
if let Some(specifier) = documents.resolve_specifier(specifier) {
// only include dependencies we know to exist otherwise typescript will error
- if documents.exists(&specifier) {
+ if documents.exists(&specifier)
+ && (specifier.scheme() == "file" || documents.is_open(&specifier))
+ {
result.push(specifier.to_string());
}
}
diff --git a/cli/tsc/99_main_compiler.js b/cli/tsc/99_main_compiler.js
index bfac52cce..3408b0f07 100644
--- a/cli/tsc/99_main_compiler.js
+++ b/cli/tsc/99_main_compiler.js
@@ -550,7 +550,7 @@ delete Object.prototype.__proto__;
ts.toPath(
fileName,
this.getCurrentDirectory(),
- this.getCanonicalFileName(fileName),
+ this.getCanonicalFileName.bind(this),
);
},
// @ts-ignore Undocumented method.