rust: patch bilge-impl to allow compilation with 1.63.0
Apply a patch that removes "let ... else" constructs, replacing them with "if let ... else" or "let ... = match ...". "let ... else" was stabilized in Rust 1.65.0. Reviewed-by: Junjie Mao <junjie.mao@hotmail.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
230b710bf4
commit
64644bc4ea
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -5,3 +5,5 @@
|
||||
*.rs diff=rust
|
||||
*.rs.inc diff=rust
|
||||
Cargo.lock diff=toml merge=binary
|
||||
|
||||
*.patch -text -whitespace
|
||||
|
@ -5,3 +5,4 @@ source_filename = bilge-impl-0.2.0.tar.gz
|
||||
source_hash = feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000adb2d8
|
||||
#method = cargo
|
||||
patch_directory = bilge-impl-0.2-rs
|
||||
diff_files = bilge-impl-1.63.0.patch
|
||||
|
45
subprojects/packagefiles/bilge-impl-1.63.0.patch
Normal file
45
subprojects/packagefiles/bilge-impl-1.63.0.patch
Normal file
@ -0,0 +1,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 {
|
Loading…
Reference in New Issue
Block a user