aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-10-09 01:57:35 +0100
committerJonas Schievink <[email protected]>2020-10-09 01:57:35 +0100
commit468b80485644bf1b15dee97d15029378f0f6d199 (patch)
tree4d9f2e64cc20459dc3bc71088332880baab81a29 /crates
parent636b413e142e2b831ded74642c8193a0dc39b4a7 (diff)
Fix source_to_def for named enum variant fields
Diffstat (limited to 'crates')
-rw-r--r--crates/hir/src/semantics/source_to_def.rs4
-rw-r--r--crates/ide/src/references.rs17
2 files changed, 21 insertions, 0 deletions
diff --git a/crates/hir/src/semantics/source_to_def.rs b/crates/hir/src/semantics/source_to_def.rs
index 5918b9541..66fc11611 100644
--- a/crates/hir/src/semantics/source_to_def.rs
+++ b/crates/hir/src/semantics/source_to_def.rs
@@ -189,6 +189,10 @@ impl SourceToDefCtx<'_, '_> {
189 let def = self.type_alias_to_def(container.with_value(it))?; 189 let def = self.type_alias_to_def(container.with_value(it))?;
190 def.into() 190 def.into()
191 }, 191 },
192 ast::Variant(it) => {
193 let def = self.enum_variant_to_def(container.with_value(it))?;
194 VariantId::from(def).into()
195 },
192 _ => continue, 196 _ => continue,
193 } 197 }
194 }; 198 };
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs
index e0830eb4f..ae68b4392 100644
--- a/crates/ide/src/references.rs
+++ b/crates/ide/src/references.rs
@@ -406,6 +406,23 @@ enum Foo {
406 } 406 }
407 407
408 #[test] 408 #[test]
409 fn test_find_all_refs_enum_var_field() {
410 check(
411 r#"
412enum Foo {
413 A,
414 B { field<|>: u8 },
415 C,
416}
417"#,
418 expect![[r#"
419 field RECORD_FIELD FileId(0) 26..35 26..31 Other
420
421 "#]],
422 );
423 }
424
425 #[test]
409 fn test_find_all_refs_two_modules() { 426 fn test_find_all_refs_two_modules() {
410 check( 427 check(
411 r#" 428 r#"