xref: /openbmc/qemu/subprojects/packagefiles/bilge-impl-1.63.0.patch (revision a1dacb66915eb7d08a0596cc97068a37c39930d3)
1*64644bc4SPaolo Bonzini--- a/src/shared/discriminant_assigner.rs
2*64644bc4SPaolo Bonzini+++ b/src/shared/discriminant_assigner.rs
3*64644bc4SPaolo Bonzini@@ -26,20 +26,20 @@
4*64644bc4SPaolo Bonzini         let discriminant_expr = &discriminant.1;
5*64644bc4SPaolo Bonzini         let variant_name = &variant.ident;
6*64644bc4SPaolo Bonzini
7*64644bc4SPaolo Bonzini-        let Expr::Lit(ExprLit { lit: Lit::Int(int), .. }) = discriminant_expr else {
8*64644bc4SPaolo Bonzini+        if let Expr::Lit(ExprLit { lit: Lit::Int(int), .. }) = discriminant_expr {
9*64644bc4SPaolo Bonzini+            let discriminant_value: u128 = int.base10_parse().unwrap_or_else(unreachable);
10*64644bc4SPaolo Bonzini+            if discriminant_value > self.max_value() {
11*64644bc4SPaolo Bonzini+                abort!(variant, "Value of variant exceeds the given number of bits")
12*64644bc4SPaolo Bonzini+            }
13*64644bc4SPaolo Bonzini+
14*64644bc4SPaolo Bonzini+            Some(discriminant_value)
15*64644bc4SPaolo Bonzini+        } else {
16*64644bc4SPaolo Bonzini             abort!(
17*64644bc4SPaolo Bonzini                 discriminant_expr,
18*64644bc4SPaolo Bonzini                 "variant `{}` is not a number", variant_name;
19*64644bc4SPaolo Bonzini                 help = "only literal integers currently supported"
20*64644bc4SPaolo Bonzini             )
21*64644bc4SPaolo Bonzini-        };
22*64644bc4SPaolo Bonzini-
23*64644bc4SPaolo Bonzini-        let discriminant_value: u128 = int.base10_parse().unwrap_or_else(unreachable);
24*64644bc4SPaolo Bonzini-        if discriminant_value > self.max_value() {
25*64644bc4SPaolo Bonzini-            abort!(variant, "Value of variant exceeds the given number of bits")
26*64644bc4SPaolo Bonzini         }
27*64644bc4SPaolo Bonzini-
28*64644bc4SPaolo Bonzini-        Some(discriminant_value)
29*64644bc4SPaolo Bonzini     }
30*64644bc4SPaolo Bonzini
31*64644bc4SPaolo Bonzini     fn assign(&mut self, variant: &Variant) -> u128 {
32*64644bc4SPaolo Bonzini--- a/src/shared/fallback.rs
33*64644bc4SPaolo Bonzini+++ b/src/shared/fallback.rs
34*64644bc4SPaolo Bonzini@@ -22,8 +22,9 @@
35*64644bc4SPaolo Bonzini             }
36*64644bc4SPaolo Bonzini             Unnamed(fields) => {
37*64644bc4SPaolo Bonzini                 let variant_fields = fields.unnamed.iter();
38*64644bc4SPaolo Bonzini-                let Ok(fallback_value) = variant_fields.exactly_one() else {
39*64644bc4SPaolo Bonzini-                    abort!(variant, "fallback variant must have exactly one field"; help = "use only one field or change to a unit variant")
40*64644bc4SPaolo Bonzini+                let fallback_value = match variant_fields.exactly_one() {
41*64644bc4SPaolo Bonzini+                    Ok(ok) => ok,
42*64644bc4SPaolo Bonzini+                    _ => abort!(variant, "fallback variant must have exactly one field"; help = "use only one field or change to a unit variant")
43*64644bc4SPaolo Bonzini                 };
44*64644bc4SPaolo Bonzini
45*64644bc4SPaolo Bonzini                 if !is_last_variant {
46