summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-12-01 15:12:10 -0500
committerGitHub <noreply@github.com>2023-12-01 20:12:10 +0000
commita1d823e27d1b605b5658fddc1c9273667f0e9e84 (patch)
tree213f35fb40b5c70832b1d9473947b3de48d4ec9e /cli/lsp
parentd8e8497eb3049f58632e4d7507090ef9915b3af6 (diff)
feat(compile): support discovering modules for more dynamic arguments (#21381)
This PR causes Deno to include more files in the graph based on how a template literal looks that's provided to a dynamic import: ```ts const file = await import(`./dir/${expr}`); ``` In this case, it will search the `dir` directory and descendant directories for any .js/jsx/etc modules and include them in the graph. To opt out of this behaviour, move the template literal to a separate line: ```ts const specifier = `./dir/${expr}` const file = await import(specifier); ```
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/documents.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index ede063c5f..95e8df917 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -1743,12 +1743,17 @@ fn analyze_module(
) -> ModuleResult {
match parsed_source_result {
Ok(parsed_source) => Ok(deno_graph::parse_module_from_ast(
- deno_graph::GraphKind::All,
- specifier,
- maybe_headers,
- parsed_source,
- Some(resolver),
- Some(npm_resolver),
+ deno_graph::ParseModuleFromAstOptions {
+ graph_kind: deno_graph::GraphKind::All,
+ specifier,
+ maybe_headers,
+ parsed_source,
+ // use a null file system because there's no need to bother resolving
+ // dynamic imports like import(`./dir/${something}`) in the LSP
+ file_system: &deno_graph::source::NullFileSystem,
+ maybe_resolver: Some(resolver),
+ maybe_npm_resolver: Some(npm_resolver),
+ },
)),
Err(err) => Err(deno_graph::ModuleGraphError::ModuleError(
deno_graph::ModuleError::ParseErr(specifier.clone(), err.clone()),