From 2ccfb49baba6a9a0381e8a5be77df5a3c8f46205 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 25 Mar 2020 13:53:15 +0100 Subject: Always expand macros during analysis --- crates/ra_ide/src/goto_definition.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide') diff --git a/crates/ra_ide/src/goto_definition.rs b/crates/ra_ide/src/goto_definition.rs index 502fcb0cf..8aed94d16 100644 --- a/crates/ra_ide/src/goto_definition.rs +++ b/crates/ra_ide/src/goto_definition.rs @@ -104,6 +104,9 @@ mod tests { let (analysis, pos) = analysis_and_position(ra_fixture); let mut navs = analysis.goto_definition(pos).unwrap().unwrap().info; + if navs.len() == 0 { + panic!("unresolved reference") + } assert_eq!(navs.len(), 1); let nav = navs.pop().unwrap(); @@ -359,7 +362,7 @@ mod tests { fn goto_def_for_fields() { covers!(ra_ide_db::goto_def_for_fields); check_goto( - " + r" //- /lib.rs struct Foo { spam: u32, @@ -378,7 +381,7 @@ mod tests { fn goto_def_for_record_fields() { covers!(ra_ide_db::goto_def_for_record_fields); check_goto( - " + r" //- /lib.rs struct Foo { spam: u32, @@ -395,6 +398,23 @@ mod tests { ); } + #[test] + fn goto_def_for_record_fields_macros() { + check_goto( + r" + //- /lib.rs + macro_rules! m { () => { 92 };} + struct Foo { spam: u32 } + + fn bar() -> Foo { + Foo { spam<|>: m!() } + } + ", + "spam RECORD_FIELD_DEF FileId(1) [45; 54) [45; 49)", + "spam: u32|spam", + ); + } + #[test] fn goto_for_tuple_fields() { check_goto( -- cgit v1.2.3