From 11e9bc60a2d9c22dbf51b7e1aa3d6e30a7006a35 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 16 Mar 2021 18:57:47 +0100 Subject: Move doc-comment highlight injection from AST to HIR --- crates/hir/src/attrs.rs | 5 +++-- crates/hir/src/semantics.rs | 1 + crates/hir/src/semantics/source_to_def.rs | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'crates/hir/src') diff --git a/crates/hir/src/attrs.rs b/crates/hir/src/attrs.rs index 9e6a3e155..505fc05e7 100644 --- a/crates/hir/src/attrs.rs +++ b/crates/hir/src/attrs.rs @@ -11,8 +11,8 @@ use hir_ty::db::HirDatabase; use syntax::ast; use crate::{ - Adt, Const, ConstParam, Enum, Field, Function, GenericParam, LifetimeParam, MacroDef, Module, - ModuleDef, Static, Struct, Trait, TypeAlias, TypeParam, Union, Variant, + Adt, Const, ConstParam, Enum, Field, Function, GenericParam, Impl, LifetimeParam, MacroDef, + Module, ModuleDef, Static, Struct, Trait, TypeAlias, TypeParam, Union, Variant, }; pub trait HasAttrs { @@ -64,6 +64,7 @@ impl_has_attrs![ (Adt, AdtId), (Module, ModuleId), (GenericParam, GenericParamId), + (Impl, ImplId), ]; macro_rules! impl_has_attrs_enum { diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 03c9371b5..c7e0d0be3 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -752,6 +752,7 @@ macro_rules! to_def_impls { to_def_impls![ (crate::Module, ast::Module, module_to_def), + (crate::Module, ast::SourceFile, source_file_to_def), (crate::Struct, ast::Struct, struct_to_def), (crate::Enum, ast::Enum, enum_to_def), (crate::Union, ast::Union, union_to_def), diff --git a/crates/hir/src/semantics/source_to_def.rs b/crates/hir/src/semantics/source_to_def.rs index e9d820140..c6ad5ecb5 100644 --- a/crates/hir/src/semantics/source_to_def.rs +++ b/crates/hir/src/semantics/source_to_def.rs @@ -71,6 +71,12 @@ impl SourceToDefCtx<'_, '_> { Some(def_map.module_id(child_id)) } + pub(super) fn source_file_to_def(&mut self, src: InFile) -> Option { + let _p = profile::span("source_file_to_def"); + let file_id = src.file_id.original_file(self.db.upcast()); + self.file_to_def(file_id).get(0).copied() + } + pub(super) fn trait_to_def(&mut self, src: InFile) -> Option { self.to_def(src, keys::TRAIT) } -- cgit v1.2.3