Skip to content

Commit 5a7b94e

Browse files
committed
Go to declaration goes to field declaration in pattern and expression shorthands
1 parent 3f19d48 commit 5a7b94e

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

crates/ide/src/goto_declaration.rs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ pub(crate) fn goto_declaration(
3636
match parent {
3737
ast::NameRef(name_ref) => match NameRefClass::classify(&sema, &name_ref)? {
3838
NameRefClass::Definition(it) => Some(it),
39-
_ => None
39+
NameRefClass::FieldShorthand { field_ref, .. } => return field_ref.try_to_nav(db),
4040
},
4141
ast::Name(name) => match NameClass::classify(&sema, &name)? {
42-
NameClass::Definition(it) => Some(it),
43-
_ => None
42+
NameClass::Definition(it) | NameClass::ConstReference(it) => Some(it),
43+
NameClass::PatFieldShorthand { field_ref, .. } => return field_ref.try_to_nav(db),
4444
},
4545
_ => None
4646
}
@@ -180,6 +180,33 @@ trait Trait {
180180
impl Trait for () {
181181
const C$0: () = ();
182182
}
183+
"#,
184+
);
185+
}
186+
187+
#[test]
188+
fn goto_decl_field_pat_shorthand() {
189+
check(
190+
r#"
191+
struct Foo { field: u32 }
192+
//^^^^^
193+
fn main() {
194+
let Foo { field$0 };
195+
}
196+
"#,
197+
);
198+
}
199+
200+
#[test]
201+
fn goto_decl_constructor_shorthand() {
202+
check(
203+
r#"
204+
struct Foo { field: u32 }
205+
//^^^^^
206+
fn main() {
207+
let field = 0;
208+
Foo { field$0 };
209+
}
183210
"#,
184211
);
185212
}

0 commit comments

Comments
 (0)