From 60fd260e7fb8c88cb9037377dc75f901a54bbe20 Mon Sep 17 00:00:00 2001 From: kjeremy Date: Fri, 15 Nov 2019 16:20:00 -0500 Subject: Handle ast::MacroCall in classify_name and impl FromSource for MacroDef Fixes #2260 --- crates/ra_ide_api/src/references/classify.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'crates/ra_ide_api/src/references') diff --git a/crates/ra_ide_api/src/references/classify.rs b/crates/ra_ide_api/src/references/classify.rs index b5e35e29f..0eeaa7f38 100644 --- a/crates/ra_ide_api/src/references/classify.rs +++ b/crates/ra_ide_api/src/references/classify.rs @@ -21,7 +21,6 @@ pub(crate) fn classify_name( let parent = name.syntax().parent()?; let file_id = file_id.into(); - // FIXME: add ast::MacroCall(it) match_ast! { match parent { ast::BindPat(it) => { @@ -104,6 +103,19 @@ pub(crate) fn classify_name( Some(from_module_def(db, def.into(), None)) } }, + ast::MacroCall(it) => { + let src = hir::Source { file_id, ast: it}; + let def = hir::MacroDef::from_source(db, src.clone())?; + + let module_src = ModuleSource::from_child_node(db, src.as_ref().map(|it| it.syntax())); + let module = Module::from_definition(db, Source::new(file_id, module_src))?; + + Some(NameDefinition { + visibility: None, + container: module, + kind: NameKind::Macro(def), + }) + }, _ => None, } } -- cgit v1.2.3