summaryrefslogtreecommitdiff
path: root/cli/lsp/sources.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2021-03-25 11:13:37 +1100
committerGitHub <noreply@github.com>2021-03-25 11:13:37 +1100
commit5ebb4017030c065c31d52be50dc7fa7a4c128d64 (patch)
tree2983a0deeb164cc64ab45feb0f892e969b386115 /cli/lsp/sources.rs
parentd6d5ced1ab90404d25a87a242ee5b03ca655abe5 (diff)
feat(lsp): add import completions (#9821)
Diffstat (limited to 'cli/lsp/sources.rs')
-rw-r--r--cli/lsp/sources.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/cli/lsp/sources.rs b/cli/lsp/sources.rs
index 445c49824..d8134d5a2 100644
--- a/cli/lsp/sources.rs
+++ b/cli/lsp/sources.rs
@@ -117,14 +117,16 @@ impl Metadata {
media_type: &MediaType,
maybe_import_map: &Option<ImportMap>,
) -> Self {
- let (dependencies, maybe_types) = if let Some((dependencies, maybe_types)) =
- analysis::analyze_dependencies(
+ let (dependencies, maybe_types) = if let Ok(parsed_module) =
+ analysis::parse_module(specifier, source, media_type)
+ {
+ let (deps, maybe_types) = analysis::analyze_dependencies(
specifier,
- source,
media_type,
+ &parsed_module,
maybe_import_map,
- ) {
- (Some(dependencies), maybe_types)
+ );
+ (Some(deps), maybe_types)
} else {
(None, None)
};
@@ -202,6 +204,17 @@ impl Sources {
) -> Option<(ModuleSpecifier, MediaType)> {
self.0.lock().unwrap().resolve_import(specifier, referrer)
}
+
+ pub fn specifiers(&self) -> Vec<ModuleSpecifier> {
+ self
+ .0
+ .lock()
+ .unwrap()
+ .metadata
+ .iter()
+ .map(|(s, _)| s.clone())
+ .collect()
+ }
}
impl Inner {