From e09d410dcd927ab93e8c169160f196a34d317946 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 7 Dec 2021 15:06:56 +0100 Subject: [PATCH] Simplify --- crates/ide/src/navigation_target.rs | 22 ++----------------- .../ide/src/syntax_highlighting/highlight.rs | 8 +------ crates/ide_completion/src/render/macro_.rs | 10 ++------- crates/ide_db/src/lib.rs | 12 ++++++++++ crates/ide_db/src/symbol_index.rs | 19 +++++++++++++++- 5 files changed, 35 insertions(+), 36 deletions(-) diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs index 68bd476a4a8..50799738d16 100644 --- a/crates/ide/src/navigation_target.rs +++ b/crates/ide/src/navigation_target.rs @@ -9,7 +9,6 @@ }; use ide_db::{ base_db::{FileId, FileRange}, - symbol_index::FileSymbolKind, SymbolKind, }; use ide_db::{defs::Definition, RootDatabase}; @@ -174,18 +173,7 @@ fn try_to_nav(&self, db: &RootDatabase) -> Option { Some(NavigationTarget { file_id: full_range.file_id, name: self.name.clone(), - kind: Some(match self.kind { - FileSymbolKind::Function => SymbolKind::Function, - FileSymbolKind::Struct => SymbolKind::Struct, - FileSymbolKind::Enum => SymbolKind::Enum, - FileSymbolKind::Trait => SymbolKind::Trait, - FileSymbolKind::Module => SymbolKind::Module, - FileSymbolKind::TypeAlias => SymbolKind::TypeAlias, - FileSymbolKind::Const => SymbolKind::Const, - FileSymbolKind::Static => SymbolKind::Static, - FileSymbolKind::Macro => SymbolKind::Macro, - FileSymbolKind::Union => SymbolKind::Union, - }), + kind: Some(self.kind.into()), full_range: full_range.range, focus_range: Some(name_range.range), container_name: self.container_name.clone(), @@ -367,13 +355,7 @@ fn try_to_nav(&self, db: &RootDatabase) -> Option { let mut res = NavigationTarget::from_named( db, src.as_ref().with_value(name_owner), - match self.kind() { - hir::MacroKind::Declarative - | hir::MacroKind::BuiltIn - | hir::MacroKind::ProcMacro => SymbolKind::Macro, - hir::MacroKind::Derive => SymbolKind::Derive, - hir::MacroKind::Attr => SymbolKind::Attribute, - }, + self.kind().into(), ); res.docs = self.docs(db); Some(res) diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index a52b2247c5a..05d2732251f 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -375,13 +375,7 @@ fn highlight_def( ) -> Highlight { let db = sema.db; let mut h = match def { - Definition::Macro(m) => Highlight::new(HlTag::Symbol(match m.kind() { - hir::MacroKind::Declarative | hir::MacroKind::BuiltIn | hir::MacroKind::ProcMacro => { - SymbolKind::Macro - } - hir::MacroKind::Derive => SymbolKind::Derive, - hir::MacroKind::Attr => SymbolKind::Attribute, - })), + Definition::Macro(m) => Highlight::new(HlTag::Symbol(m.kind().into())), Definition::Field(_) => Highlight::new(HlTag::Symbol(SymbolKind::Field)), Definition::Module(module) => { let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Module)); diff --git a/crates/ide_completion/src/render/macro_.rs b/crates/ide_completion/src/render/macro_.rs index 22fb1f48251..4b505b3f5ad 100644 --- a/crates/ide_completion/src/render/macro_.rs +++ b/crates/ide_completion/src/render/macro_.rs @@ -52,14 +52,8 @@ fn render(self, import_to_add: Option) -> Option { } else { Some(self.ctx.source_range()) }?; - let kind = match self.macro_.kind() { - hir::MacroKind::Derive => SymbolKind::Derive, - hir::MacroKind::Attr => SymbolKind::Attribute, - hir::MacroKind::BuiltIn | hir::MacroKind::Declarative | hir::MacroKind::ProcMacro => { - SymbolKind::Macro - } - }; - let mut item = CompletionItem::new(kind, source_range, self.label()); + let mut item = + CompletionItem::new(SymbolKind::from(self.macro_.kind()), source_range, self.label()); item.set_deprecated(self.ctx.is_deprecated(self.macro_)).set_detail(self.detail()); if let Some(import_to_add) = import_to_add { diff --git a/crates/ide_db/src/lib.rs b/crates/ide_db/src/lib.rs index 0d14c176b58..bcbb09e31b5 100644 --- a/crates/ide_db/src/lib.rs +++ b/crates/ide_db/src/lib.rs @@ -171,6 +171,18 @@ pub enum SymbolKind { Variant, } +impl From for SymbolKind { + fn from(it: hir::MacroKind) -> Self { + match it { + hir::MacroKind::Declarative | hir::MacroKind::BuiltIn | hir::MacroKind::ProcMacro => { + SymbolKind::Macro + } + hir::MacroKind::Derive => SymbolKind::Derive, + hir::MacroKind::Attr => SymbolKind::Attribute, + } + } +} + #[cfg(test)] mod tests { mod sourcegen_lints; diff --git a/crates/ide_db/src/symbol_index.rs b/crates/ide_db/src/symbol_index.rs index cc2b2bbb7b8..e8c6ec3e0ee 100644 --- a/crates/ide_db/src/symbol_index.rs +++ b/crates/ide_db/src/symbol_index.rs @@ -44,7 +44,7 @@ use rustc_hash::FxHashSet; use syntax::{ast::HasName, AstNode, SmolStr, SyntaxNode, SyntaxNodePtr}; -use crate::RootDatabase; +use crate::{RootDatabase, SymbolKind}; #[derive(Debug)] pub struct Query { @@ -430,6 +430,23 @@ fn is_type(self: FileSymbolKind) -> bool { } } +impl From for SymbolKind { + fn from(it: FileSymbolKind) -> Self { + match it { + FileSymbolKind::Const => SymbolKind::Const, + FileSymbolKind::Enum => SymbolKind::Enum, + FileSymbolKind::Function => SymbolKind::Function, + FileSymbolKind::Macro => SymbolKind::Macro, + FileSymbolKind::Module => SymbolKind::Module, + FileSymbolKind::Static => SymbolKind::Static, + FileSymbolKind::Struct => SymbolKind::Struct, + FileSymbolKind::Trait => SymbolKind::Trait, + FileSymbolKind::TypeAlias => SymbolKind::TypeAlias, + FileSymbolKind::Union => SymbolKind::Union, + } + } +} + /// Represents an outstanding module that the symbol collector must collect symbols from. struct SymbolCollectorWork { module_id: ModuleId, -- 2.44.0