]> git.lizzy.rs Git - rust.git/commitdiff
Simplify
authorLukas Wirth <lukastw97@gmail.com>
Tue, 7 Dec 2021 14:06:56 +0000 (15:06 +0100)
committerLukas Wirth <lukastw97@gmail.com>
Tue, 7 Dec 2021 14:06:56 +0000 (15:06 +0100)
crates/ide/src/navigation_target.rs
crates/ide/src/syntax_highlighting/highlight.rs
crates/ide_completion/src/render/macro_.rs
crates/ide_db/src/lib.rs
crates/ide_db/src/symbol_index.rs

index 68bd476a4a824e9a08bd9622b710a953efa0e68e..50799738d16f7f3043f1de4ba360c731f6b96db6 100644 (file)
@@ -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<NavigationTarget> {
         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<NavigationTarget> {
         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)
index a52b2247c5abae7040063b6d61f2c2bcb107389d..05d2732251ff70866c60694fa14ed558cb3bd7c9 100644 (file)
@@ -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));
index 22fb1f4825193cb23f0558cc81f268d29d136b35..4b505b3f5ad3c18200155bc87bc086186d82b7cd 100644 (file)
@@ -52,14 +52,8 @@ fn render(self, import_to_add: Option<ImportEdit>) -> Option<CompletionItem> {
         } 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 {
index 0d14c176b58c5d70a6b54ed3c103ab88abe914c2..bcbb09e31b5a33a0a6d88c1b9bcc90f1d0718e32 100644 (file)
@@ -171,6 +171,18 @@ pub enum SymbolKind {
     Variant,
 }
 
+impl From<hir::MacroKind> 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;
index cc2b2bbb7b84d0d0019a020376157baffddf336b..e8c6ec3e0ee864bbf488b6001ea7356b5971e554 100644 (file)
@@ -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<FileSymbolKind> 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,