mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 21:35:20 +00:00
HasSource::source_old -> HasSource::source for places where proc-macros were special cased
In #6901 some special case handling for proc-macros was introduced to prevent panicing as they have no AST. Now the new HasSource::source method is used that returns an option. Generally this was a pretty trivial change, the only thing of much interest is that `hir::MacroDef` now implements `TryToNav` not `ToNav` as this allows us to handle `HasSource::source` now returning an option.
This commit is contained in:
parent
ea4708c444
commit
14d0db0759
4 changed files with 11 additions and 42 deletions
|
@ -39,20 +39,13 @@ impl<'a> MacroRender<'a> {
|
|||
}
|
||||
|
||||
fn render(&self, import_to_add: Option<ImportEdit>) -> Option<CompletionItem> {
|
||||
// FIXME: Currently proc-macro do not have ast-node,
|
||||
// such that it does not have source
|
||||
// more discussion: https://github.com/rust-analyzer/rust-analyzer/issues/6913
|
||||
if self.macro_.is_proc_macro() {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut builder =
|
||||
CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), &self.label())
|
||||
.kind(CompletionItemKind::Macro)
|
||||
.set_documentation(self.docs.clone())
|
||||
.set_deprecated(self.ctx.is_deprecated(self.macro_))
|
||||
.add_import(import_to_add)
|
||||
.detail(self.detail());
|
||||
.detail(self.detail()?);
|
||||
|
||||
let needs_bang = self.needs_bang();
|
||||
builder = match self.ctx.snippet_cap() {
|
||||
|
@ -95,10 +88,9 @@ impl<'a> MacroRender<'a> {
|
|||
format!("{}!", self.name)
|
||||
}
|
||||
|
||||
fn detail(&self) -> String {
|
||||
#[allow(deprecated)]
|
||||
let ast_node = self.macro_.source_old(self.ctx.db()).value;
|
||||
macro_label(&ast_node)
|
||||
fn detail(&self) -> Option<String> {
|
||||
let ast_node = self.macro_.source(self.ctx.db())?.value;
|
||||
Some(macro_label(&ast_node))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue