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.
Chayim Refael Friedman 3 weeks ago
parent ace4702 · commit 6c910e1
-rw-r--r--crates/hir/src/symbols.rs2
-rw-r--r--crates/ide-assists/src/handlers/auto_import.rs31
-rw-r--r--crates/ide-completion/src/tests/expression.rs1
-rw-r--r--crates/ide-db/src/test_data/test_symbol_index_collection.txt4
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<&()>,