mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-03 13:23:25 +00:00
Fix selected multi variants applicable generate_default_from_enum_variant
This commit is contained in:
parent
2268a56350
commit
d6c66dff1d
1 changed files with 46 additions and 0 deletions
|
|
@ -39,6 +39,9 @@ pub(crate) fn generate_default_from_enum_variant(
|
|||
cov_mark::hit!(test_gen_default_on_non_unit_variant_not_implemented);
|
||||
return None;
|
||||
}
|
||||
if !variant.syntax().text_range().contains_range(ctx.selection_trimmed()) {
|
||||
return None;
|
||||
}
|
||||
|
||||
if existing_default_impl(&ctx.sema, &variant).is_some() {
|
||||
cov_mark::hit!(test_gen_default_impl_already_exists);
|
||||
|
|
@ -114,6 +117,49 @@ impl Default for Variant {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_default_selected_variant() {
|
||||
check_assist(
|
||||
generate_default_from_enum_variant,
|
||||
r#"
|
||||
//- minicore: default
|
||||
enum Variant {
|
||||
Undefined,
|
||||
$0Minor$0,
|
||||
Major,
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
enum Variant {
|
||||
Undefined,
|
||||
Minor,
|
||||
Major,
|
||||
}
|
||||
|
||||
impl Default for Variant {
|
||||
fn default() -> Self {
|
||||
Self::Minor
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_default_not_applicable_with_multiple_variant_selection() {
|
||||
check_assist_not_applicable(
|
||||
generate_default_from_enum_variant,
|
||||
r#"
|
||||
//- minicore: default
|
||||
enum Variant {
|
||||
Undefined,
|
||||
$0Minor,
|
||||
M$0ajor,
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_generate_default_already_implemented() {
|
||||
cov_mark::check!(test_gen_default_impl_already_exists);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue