Unnamed repository; edit this file 'description' to name the repository.
fix: add test for missing case in bool_to_enum
Ryan Mehri 2024-01-02
parent a8d935e · commit 2034556
-rw-r--r--crates/ide-assists/src/handlers/bool_to_enum.rs39
1 files changed, 34 insertions, 5 deletions
diff --git a/crates/ide-assists/src/handlers/bool_to_enum.rs b/crates/ide-assists/src/handlers/bool_to_enum.rs
index 0f2d1057c0..1a53cf9609 100644
--- a/crates/ide-assists/src/handlers/bool_to_enum.rs
+++ b/crates/ide-assists/src/handlers/bool_to_enum.rs
@@ -405,13 +405,12 @@ fn find_record_expr_usage(
let record_field = ast::RecordExprField::for_field_name(name_ref)?;
let initializer = record_field.expr()?;
- if let Definition::Field(expected_field) = target_definition {
- if got_field != expected_field {
- return None;
+ match target_definition {
+ Definition::Field(expected_field) if got_field == expected_field => {
+ Some((record_field, initializer))
}
+ _ => None,
}
-
- Some((record_field, initializer))
}
fn find_record_pat_field_usage(name: &ast::NameLike) -> Option<ast::Pat> {
@@ -801,6 +800,36 @@ fn main() {
}
#[test]
+ fn local_var_init_struct_usage() {
+ check_assist(
+ bool_to_enum,
+ r#"
+struct Foo {
+ foo: bool,
+}
+
+fn main() {
+ let $0foo = true;
+ let s = Foo { foo };
+}
+"#,
+ r#"
+struct Foo {
+ foo: bool,
+}
+
+#[derive(PartialEq, Eq)]
+enum Bool { True, False }
+
+fn main() {
+ let foo = Bool::True;
+ let s = Foo { foo: foo == Bool::True };
+}
+"#,
+ )
+ }
+
+ #[test]
fn field_struct_basic() {
cov_mark::check!(replaces_record_expr);
check_assist(