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