diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2024-04-08 19:45:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-08 19:45:20 +0100 |
commit | 3c346c8ea6aa888475c19d512ddd4c247c00b1ea (patch) | |
tree | d7e4e7e3369c79ad569cca3c982ead766f2d0189 /cli | |
parent | 9752a153ea69328acb6a5ca179c4b8cf7780c894 (diff) |
perf(lsp): don't pass remote modules as tsc roots (#23259)
Diffstat (limited to 'cli')
-rw-r--r-- | cli/lsp/documents.rs | 7 | ||||
-rw-r--r-- | cli/lsp/tsc.rs | 4 | ||||
-rw-r--r-- | cli/tsc/99_main_compiler.js | 2 |
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. |