Unnamed repository; edit this file 'description' to name the repository.
Do not mark enum variants as assoc items in symbol table
Since they can be referenced without the enum, and this prevents autoimport of them.
| -rw-r--r-- | crates/hir/src/symbols.rs | 2 | ||||
| -rw-r--r-- | crates/ide-assists/src/handlers/auto_import.rs | 31 | ||||
| -rw-r--r-- | crates/ide-completion/src/tests/expression.rs | 1 | ||||
| -rw-r--r-- | crates/ide-db/src/test_data/test_symbol_index_collection.txt | 4 |
4 files changed, 35 insertions, 3 deletions
diff --git a/crates/hir/src/symbols.rs b/crates/hir/src/symbols.rs index a00c3219b2..c4040c1c00 100644 --- a/crates/hir/src/symbols.rs +++ b/crates/hir/src/symbols.rs @@ -191,7 +191,7 @@ impl<'a> SymbolCollector<'a> { this.with_container_name(Some(enum_name), |this| { let variants = id.enum_variants(this.db); for (variant_name, (variant_id, _)) in &variants.variants { - this.push_decl(*variant_id, variant_name, true, None); + this.push_decl(*variant_id, variant_name, false, None); } }); } diff --git a/crates/ide-assists/src/handlers/auto_import.rs b/crates/ide-assists/src/handlers/auto_import.rs index ac0bae7cd9..5c5261c898 100644 --- a/crates/ide-assists/src/handlers/auto_import.rs +++ b/crates/ide-assists/src/handlers/auto_import.rs @@ -2037,4 +2037,35 @@ fn baz() { "Import `foo::Ext` without `as _`", ); } + + #[test] + fn local_enum_variant() { + check_assist( + auto_import, + r#" +mod foo { + pub enum ControlFlow { + Continue, + } +} + +fn main() { + Continue$0; +} + "#, + r#" +use foo::ControlFlow::Continue; + +mod foo { + pub enum ControlFlow { + Continue, + } +} + +fn main() { + Continue; +} + "#, + ); + } } diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs index c1205f9e18..a1ae60bfc7 100644 --- a/crates/ide-completion/src/tests/expression.rs +++ b/crates/ide-completion/src/tests/expression.rs @@ -1055,6 +1055,7 @@ fn brr() { fn brr() fn() st YoloVariant YoloVariant st YoloVariant {…} YoloVariant { f: usize } + ev Yolo(…) (use HH::Yolo) Yolo(YoloVariant) bt u32 u32 kw const kw crate:: diff --git a/crates/ide-db/src/test_data/test_symbol_index_collection.txt b/crates/ide-db/src/test_data/test_symbol_index_collection.txt index 1b20a574bd..a84f75cb4e 100644 --- a/crates/ide-db/src/test_data/test_symbol_index_collection.txt +++ b/crates/ide-db/src/test_data/test_symbol_index_collection.txt @@ -38,7 +38,7 @@ "Enum", ), is_alias: false, - is_assoc: true, + is_assoc: false, is_import: false, do_not_complete: Yes, _marker: PhantomData<&()>, @@ -110,7 +110,7 @@ "Enum", ), is_alias: false, - is_assoc: true, + is_assoc: false, is_import: false, do_not_complete: Yes, _marker: PhantomData<&()>, |