Skip to content

Commit 0bf0039

Browse files
committed
simplify noop match
1 parent 21c1768 commit 0bf0039

7 files changed

+36
-61
lines changed

crates/stackable-versioned-macros/src/codegen/container/struct/k8s.rs

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ impl Struct {
373373
// Generate conversion paths and the match arms for these paths
374374
let conversion_match_arms =
375375
self.generate_kubernetes_conversion_match_arms(versions, kubernetes_arguments);
376-
let noop_match_arms = self.generate_kubernetes_noop_match_arms(versions);
376+
let noop_match_arm = self.generate_kubernetes_noop_match_arm(versions);
377377

378378
// TODO (@Techassi): Make this a feature, drop the option from the macro arguments
379379
// Generate tracing attributes and events if tracing is enabled
@@ -486,7 +486,7 @@ impl Struct {
486486
#(#conversion_match_arms,)*
487487
// We explicitly list the remaining no-op cases, so the compiler ensures we
488488
// did not miss a conversion.
489-
#(#noop_match_arms,)*
489+
#noop_match_arm,
490490
}
491491
}
492492

@@ -579,25 +579,18 @@ impl Struct {
579579
.collect()
580580
}
581581

582-
fn generate_kubernetes_noop_match_arms(
583-
&self,
584-
versions: &[VersionDefinition],
585-
) -> Vec<TokenStream> {
582+
fn generate_kubernetes_noop_match_arm(&self, versions: &[VersionDefinition]) -> TokenStream {
586583
let version_enum_ident = &self.common.idents.kubernetes_version;
584+
let version_idents = versions.iter().map(|v| &v.idents.variant);
587585

588-
versions
589-
.iter()
590-
.map(|version| {
591-
let version_ident = &version.idents.variant;
592-
593-
quote! {
594-
// This is the case if the desired version matches the current object api version.
595-
// NOTE (@Techassi): I'm curious if this will ever happen? In theory the K8s
596-
// apiserver should never send such a conversion review.
597-
(Self::#version_ident(_), #version_enum_ident::#version_ident) => converted_objects.push(object)
598-
}
599-
})
600-
.collect()
586+
quote! {
587+
// This is the case if the desired version matches the current object api version.
588+
// NOTE (@Techassi): I'm curious if this will ever happen? In theory the K8s
589+
// apiserver should never send such a conversion review.
590+
#(
591+
(Self::#version_idents(_), #version_enum_ident::#version_idents)
592+
)|* => converted_objects.push(object)
593+
}
601594
}
602595

603596
fn generate_kubernetes_conversion_tracing(

crates/stackable-versioned-macros/tests/snapshots/[email protected]

Lines changed: 3 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshot_tests__k8s@conversion_tracking.rs.snap

Lines changed: 3 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshot_tests__k8s@crate_overrides.rs.snap

Lines changed: 3 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/tests/snapshots/[email protected]

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshot_tests__k8s@module_preserve.rs.snap

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-versioned-macros/tests/snapshots/stackable_versioned_macros__snapshot_tests__k8s@renamed_kind.rs.snap

Lines changed: 3 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)