diff --git a/crates/stackable-versioned-macros/src/codegen/item/variant.rs b/crates/stackable-versioned-macros/src/codegen/item/variant.rs index c6b3d6f7f..f56e75aeb 100644 --- a/crates/stackable-versioned-macros/src/codegen/item/variant.rs +++ b/crates/stackable-versioned-macros/src/codegen/item/variant.rs @@ -164,7 +164,7 @@ impl VersionedVariant { }), Direction::Downgrade => Some(quote! { #next_version_ident::#enum_ident::#next_variant_ident #from_fields - => #old_version_ident::#enum_ident::#old_variant_ident #from_fields, + => #old_version_ident::#enum_ident::#old_variant_ident #for_fields, }), } } diff --git a/crates/stackable-versioned-macros/tests/inputs/pass/enum_fields.rs b/crates/stackable-versioned-macros/tests/inputs/pass/enum_fields.rs index f129a8ea6..9b29501a1 100644 --- a/crates/stackable-versioned-macros/tests/inputs/pass/enum_fields.rs +++ b/crates/stackable-versioned-macros/tests/inputs/pass/enum_fields.rs @@ -4,11 +4,18 @@ use stackable_versioned::versioned; // --- pub mod versioned { enum Foo { - A { aa: usize, aaa: u64 }, - B { bb: bool }, + #[versioned(changed(since = "v1alpha2", from_name = "PrevA"))] + A { + aa: usize, + aaa: u64, + }, + B { + bb: bool, + }, } enum Bar { + #[versioned(changed(since = "v1alpha2", from_name = "PrevA"))] A(A), B {}, } diff --git a/crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshots__pass@enum_fields.rs.snap b/crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshots__pass@enum_fields.rs.snap index 4436f5a51..5f919aae1 100644 --- a/crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshots__pass@enum_fields.rs.snap +++ b/crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshots__pass@enum_fields.rs.snap @@ -7,11 +7,11 @@ input_file: crates/stackable-versioned-macros/tests/inputs/pass/enum_fields.rs pub mod v1alpha1 { use super::*; pub enum Foo { - A { aa: usize, aaa: u64 }, + PrevA { aa: usize, aaa: u64 }, B { bb: bool }, } pub enum Bar { - A(A), + PrevA(A), B {}, } pub struct A {} @@ -20,7 +20,7 @@ pub mod v1alpha1 { impl ::core::convert::From for v1alpha2::Foo { fn from(__sv_foo: v1alpha1::Foo) -> Self { match __sv_foo { - v1alpha1::Foo::A { aa, aaa } => { + v1alpha1::Foo::PrevA { aa, aaa } => { v1alpha2::Foo::A { aa: aa.into(), aaa: aaa.into(), @@ -35,7 +35,7 @@ impl ::core::convert::From for v1alpha1::Foo { fn from(__sv_foo: v1alpha2::Foo) -> Self { match __sv_foo { v1alpha2::Foo::A { aa, aaa } => { - v1alpha1::Foo::A { + v1alpha1::Foo::PrevA { aa: aa.into(), aaa: aaa.into(), } @@ -48,7 +48,7 @@ impl ::core::convert::From for v1alpha1::Foo { impl ::core::convert::From for v1alpha2::Bar { fn from(__sv_bar: v1alpha1::Bar) -> Self { match __sv_bar { - v1alpha1::Bar::A(__sv_0) => v1alpha2::Bar::A(__sv_0.into()), + v1alpha1::Bar::PrevA(__sv_0) => v1alpha2::Bar::A(__sv_0.into()), v1alpha1::Bar::B {} => v1alpha2::Bar::B {}, } } @@ -57,7 +57,7 @@ impl ::core::convert::From for v1alpha2::Bar { impl ::core::convert::From for v1alpha1::Bar { fn from(__sv_bar: v1alpha2::Bar) -> Self { match __sv_bar { - v1alpha2::Bar::A(__sv_0) => v1alpha1::Bar::A(__sv_0.into()), + v1alpha2::Bar::A(__sv_0) => v1alpha1::Bar::PrevA(__sv_0.into()), v1alpha2::Bar::B {} => v1alpha1::Bar::B {}, } } diff --git a/crates/stackable-versioned/CHANGELOG.md b/crates/stackable-versioned/CHANGELOG.md index 643a52ede..0af99245a 100644 --- a/crates/stackable-versioned/CHANGELOG.md +++ b/crates/stackable-versioned/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Fixed + +- Fix inconsistent use of `.into()` functions in enum `From` impls with variant data ([#1109]). + +[#1109]: https://github.com/stackabletech/operator-rs/pull/1109 + ## [0.8.2] - 2025-09-09 ### Added