Skip to content

Commit

Permalink
Merge pull request #19261 from Veykril/push-rnqlyrvqpols
Browse files Browse the repository at this point in the history
Support tuple struct patterns for expand_rest_pattern assist
  • Loading branch information
Veykril authored Mar 3, 2025
2 parents b685ada + 4ad546f commit 03f90b0
Show file tree
Hide file tree
Showing 8 changed files with 496 additions and 293 deletions.
2 changes: 2 additions & 0 deletions crates/hir/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ pub enum ModuleDef {
Function(Function),
Adt(Adt),
// Can't be directly declared, but can be imported.
// FIXME: Rename to `EnumVariant`
Variant(Variant),
Const(Const),
Static(Static),
Expand Down Expand Up @@ -1564,6 +1565,7 @@ impl From<&Variant> for DefWithBodyId {
}
}

// FIXME: Rename to `EnumVariant`
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Variant {
pub(crate) id: EnumVariantId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use syntax::{ast, AstNode};

use crate::{AssistContext, Assists};

// Assist: explicit_enum_discriminant
// Assist: add_explicit_enum_discriminant
//
// Adds explicit discriminant to all enum variants.
//
Expand All @@ -29,7 +29,10 @@ use crate::{AssistContext, Assists};
// Quux = 43,
// }
// ```
pub(crate) fn explicit_enum_discriminant(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> {
pub(crate) fn add_explicit_enum_discriminant(
acc: &mut Assists,
ctx: &AssistContext<'_>,
) -> Option<()> {
let enum_node = ctx.find_node_at_offset::<ast::Enum>()?;
let enum_def = ctx.sema.to_def(&enum_node)?;

Expand All @@ -50,7 +53,7 @@ pub(crate) fn explicit_enum_discriminant(acc: &mut Assists, ctx: &AssistContext<
}

acc.add(
AssistId("explicit_enum_discriminant", AssistKind::RefactorRewrite),
AssistId("add_explicit_enum_discriminant", AssistKind::RefactorRewrite),
"Add explicit enum discriminants",
enum_node.syntax().text_range(),
|builder| {
Expand Down Expand Up @@ -88,12 +91,12 @@ fn add_variant_discriminant(
mod tests {
use crate::tests::{check_assist, check_assist_not_applicable};

use super::explicit_enum_discriminant;
use super::add_explicit_enum_discriminant;

#[test]
fn non_primitive_repr_non_data_bearing_add_discriminant() {
check_assist(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
enum TheEnum$0 {
Foo,
Expand All @@ -120,7 +123,7 @@ enum TheEnum {
#[test]
fn primitive_repr_data_bearing_add_discriminant() {
check_assist(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
#[repr(u8)]
$0enum TheEnum {
Expand All @@ -145,7 +148,7 @@ enum TheEnum {
#[test]
fn non_primitive_repr_data_bearing_not_applicable() {
check_assist_not_applicable(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
enum TheEnum$0 {
Foo,
Expand All @@ -159,7 +162,7 @@ enum TheEnum$0 {
#[test]
fn primitive_repr_non_data_bearing_add_discriminant() {
check_assist(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
#[repr(i64)]
enum TheEnum {
Expand All @@ -184,7 +187,7 @@ enum TheEnum {
#[test]
fn discriminants_already_explicit_not_applicable() {
check_assist_not_applicable(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
enum TheEnum$0 {
Foo = 0,
Expand All @@ -197,7 +200,7 @@ enum TheEnum$0 {
#[test]
fn empty_enum_not_applicable() {
check_assist_not_applicable(
explicit_enum_discriminant,
add_explicit_enum_discriminant,
r#"
enum TheEnum$0 {}
"#,
Expand Down
Loading

0 comments on commit 03f90b0

Please sign in to comment.