mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 21:05:02 +00:00
Support unions in symbol search
This commit is contained in:
parent
89fef5307e
commit
a872ebf81f
3 changed files with 13 additions and 9 deletions
|
@ -201,8 +201,7 @@ impl<'a> Render<'a> {
|
||||||
ScopeDef::ModuleDef(Module(..)) => CompletionItemKind::SymbolKind(SymbolKind::Module),
|
ScopeDef::ModuleDef(Module(..)) => CompletionItemKind::SymbolKind(SymbolKind::Module),
|
||||||
ScopeDef::ModuleDef(Adt(adt)) => CompletionItemKind::SymbolKind(match adt {
|
ScopeDef::ModuleDef(Adt(adt)) => CompletionItemKind::SymbolKind(match adt {
|
||||||
hir::Adt::Struct(_) => SymbolKind::Struct,
|
hir::Adt::Struct(_) => SymbolKind::Struct,
|
||||||
// FIXME: add CompletionItemKind::Union
|
hir::Adt::Union(_) => SymbolKind::Union,
|
||||||
hir::Adt::Union(_) => SymbolKind::Struct,
|
|
||||||
hir::Adt::Enum(_) => SymbolKind::Enum,
|
hir::Adt::Enum(_) => SymbolKind::Enum,
|
||||||
}),
|
}),
|
||||||
ScopeDef::ModuleDef(Const(..)) => CompletionItemKind::SymbolKind(SymbolKind::Const),
|
ScopeDef::ModuleDef(Const(..)) => CompletionItemKind::SymbolKind(SymbolKind::Const),
|
||||||
|
|
|
@ -173,6 +173,7 @@ impl ToNav for FileSymbol {
|
||||||
FileSymbolKind::Const => SymbolKind::Const,
|
FileSymbolKind::Const => SymbolKind::Const,
|
||||||
FileSymbolKind::Static => SymbolKind::Static,
|
FileSymbolKind::Static => SymbolKind::Static,
|
||||||
FileSymbolKind::Macro => SymbolKind::Macro,
|
FileSymbolKind::Macro => SymbolKind::Macro,
|
||||||
|
FileSymbolKind::Union => SymbolKind::Union,
|
||||||
}),
|
}),
|
||||||
full_range: self.range,
|
full_range: self.range,
|
||||||
focus_range: self.name_range,
|
focus_range: self.name_range,
|
||||||
|
|
|
@ -356,15 +356,16 @@ pub struct FileSymbol {
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]
|
#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]
|
||||||
pub enum FileSymbolKind {
|
pub enum FileSymbolKind {
|
||||||
Function,
|
|
||||||
Struct,
|
|
||||||
Enum,
|
|
||||||
Trait,
|
|
||||||
Module,
|
|
||||||
TypeAlias,
|
|
||||||
Const,
|
Const,
|
||||||
Static,
|
Enum,
|
||||||
|
Function,
|
||||||
Macro,
|
Macro,
|
||||||
|
Module,
|
||||||
|
Static,
|
||||||
|
Struct,
|
||||||
|
Trait,
|
||||||
|
TypeAlias,
|
||||||
|
Union,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FileSymbolKind {
|
impl FileSymbolKind {
|
||||||
|
@ -375,6 +376,7 @@ impl FileSymbolKind {
|
||||||
| FileSymbolKind::Enum
|
| FileSymbolKind::Enum
|
||||||
| FileSymbolKind::Trait
|
| FileSymbolKind::Trait
|
||||||
| FileSymbolKind::TypeAlias
|
| FileSymbolKind::TypeAlias
|
||||||
|
| FileSymbolKind::Union
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,6 +427,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> {
|
||||||
ast::Const(it) => decl(it),
|
ast::Const(it) => decl(it),
|
||||||
ast::Static(it) => decl(it),
|
ast::Static(it) => decl(it),
|
||||||
ast::MacroRules(it) => decl(it),
|
ast::MacroRules(it) => decl(it),
|
||||||
|
ast::Union(it) => decl(it),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -443,6 +446,7 @@ fn to_file_symbol(node: &SyntaxNode, file_id: FileId) -> Option<FileSymbol> {
|
||||||
CONST => FileSymbolKind::Const,
|
CONST => FileSymbolKind::Const,
|
||||||
STATIC => FileSymbolKind::Static,
|
STATIC => FileSymbolKind::Static,
|
||||||
MACRO_RULES => FileSymbolKind::Macro,
|
MACRO_RULES => FileSymbolKind::Macro,
|
||||||
|
UNION => FileSymbolKind::Union,
|
||||||
kind => unreachable!("{:?}", kind),
|
kind => unreachable!("{:?}", kind),
|
||||||
},
|
},
|
||||||
range: node.text_range(),
|
range: node.text_range(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue