mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix(lsp): display module types only dependencies on hover (#12683)
Fixes: #12675
This commit is contained in:
parent
91f8bdda2c
commit
182de1452b
3 changed files with 115 additions and 10 deletions
|
@ -263,6 +263,13 @@ impl Document {
|
|||
self.maybe_lsp_version.is_some()
|
||||
}
|
||||
|
||||
fn maybe_types_dependency(&self) -> deno_graph::Resolved {
|
||||
let module_result = self.maybe_module.as_ref()?;
|
||||
let module = module_result.as_ref().ok()?;
|
||||
let (_, maybe_dep) = module.maybe_types_dependency.as_ref()?;
|
||||
maybe_dep.clone()
|
||||
}
|
||||
|
||||
fn media_type(&self) -> MediaType {
|
||||
if let Some(Ok(module)) = &self.maybe_module {
|
||||
module.media_type
|
||||
|
@ -597,6 +604,16 @@ impl Inner {
|
|||
})
|
||||
}
|
||||
|
||||
fn get_maybe_types_for_dependency(
|
||||
&mut self,
|
||||
dependency: &deno_graph::Dependency,
|
||||
) -> deno_graph::Resolved {
|
||||
let code_dep = dependency.maybe_code.as_ref()?;
|
||||
let (specifier, _) = code_dep.as_ref().ok()?;
|
||||
let doc = self.get(specifier)?;
|
||||
doc.maybe_types_dependency()
|
||||
}
|
||||
|
||||
fn get_navigation_tree(
|
||||
&mut self,
|
||||
specifier: &ModuleSpecifier,
|
||||
|
@ -952,6 +969,16 @@ impl Documents {
|
|||
self.0.lock().get_maybe_dependency(specifier, position)
|
||||
}
|
||||
|
||||
/// For a given dependency, try to resolve the maybe_types_dependency for the
|
||||
/// dependency. This covers modules that assert their own types, like via the
|
||||
/// triple-slash reference, or the `X-TypeScript-Types` header.
|
||||
pub fn get_maybe_types_for_dependency(
|
||||
&self,
|
||||
dependency: &deno_graph::Dependency,
|
||||
) -> deno_graph::Resolved {
|
||||
self.0.lock().get_maybe_types_for_dependency(dependency)
|
||||
}
|
||||
|
||||
/// Get a reference to the navigation tree stored for a given specifier, if
|
||||
/// any.
|
||||
pub fn get_navigation_tree(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue