diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-10-09 19:47:52 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-10-09 19:47:52 +0100 |
commit | c42373892161d2d172c13c6377a689049f8f9d7e (patch) | |
tree | adfcfe50433188eec4febbfe80fe432bcc32234f /crates/ide | |
parent | cde189c5d5d77afd077b067a887bbc7e3adb4f80 (diff) | |
parent | 5dcbf03d0f114cab1ae1748dd3c3632a52f6f52d (diff) |
Merge #6189
6189: adt: correctly inherit field visibility from enum r=jonas-schievink a=jonas-schievink
Previously, "find all references" on a variant field wouldn't find any
references outside the defining module. This is because variant fields
were incorrectly assumed to be private, like struct fields without
explicit visibility, but they actually inherit the enum's visibility.
bors r+ :robot:
Co-authored-by: Jonas Schievink <[email protected]>
Diffstat (limited to 'crates/ide')
-rw-r--r-- | crates/ide/src/references.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs index 571dd5452..9315f7354 100644 --- a/crates/ide/src/references.rs +++ b/crates/ide/src/references.rs | |||
@@ -732,6 +732,30 @@ fn f(e: En) { | |||
732 | ); | 732 | ); |
733 | } | 733 | } |
734 | 734 | ||
735 | #[test] | ||
736 | fn test_find_all_refs_enum_var_privacy() { | ||
737 | check( | ||
738 | r#" | ||
739 | mod m { | ||
740 | pub enum En { | ||
741 | Variant { | ||
742 | field<|>: u8, | ||
743 | } | ||
744 | } | ||
745 | } | ||
746 | |||
747 | fn f() -> m::En { | ||
748 | m::En::Variant { field: 0 } | ||
749 | } | ||
750 | "#, | ||
751 | expect![[r#" | ||
752 | field RECORD_FIELD FileId(0) 56..65 56..61 Other | ||
753 | |||
754 | FileId(0) 125..130 Other Read | ||
755 | "#]], | ||
756 | ); | ||
757 | } | ||
758 | |||
735 | fn check(ra_fixture: &str, expect: Expect) { | 759 | fn check(ra_fixture: &str, expect: Expect) { |
736 | check_with_scope(ra_fixture, None, expect) | 760 | check_with_scope(ra_fixture, None, expect) |
737 | } | 761 | } |