Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/goto_definition.rs')
-rw-r--r--crates/ide/src/goto_definition.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs
index 8836166d96..c61b2ba84f 100644
--- a/crates/ide/src/goto_definition.rs
+++ b/crates/ide/src/goto_definition.rs
@@ -83,7 +83,7 @@ pub(crate) fn goto_definition(
}
let navs = sema
- .descend_into_macros(original_token.clone())
+ .descend_into_macros_no_opaque(original_token.clone())
.into_iter()
.filter_map(|token| {
let parent = token.parent()?;
@@ -2661,6 +2661,24 @@ fn foo() {
}
#[test]
+ fn label_inside_macro() {
+ check(
+ r#"
+macro_rules! m {
+ ($s:stmt) => { $s };
+}
+
+fn foo() {
+ 'label: loop {
+ // ^^^^^^
+ m!(continue 'label$0);
+ }
+}
+"#,
+ );
+ }
+
+ #[test]
fn goto_def_on_return_in_try() {
check(
r#"