diff --git a/c2rust-ast-builder/src/builder.rs b/c2rust-ast-builder/src/builder.rs index 526bbd45ad..2d77573eb7 100644 --- a/c2rust-ast-builder/src/builder.rs +++ b/c2rust-ast-builder/src/builder.rs @@ -1233,6 +1233,20 @@ impl Builder { }) } + pub fn tuple_struct_pat(self, path: Pa, qself: Option, elems: Vec) -> Pat + where + Pa: Make, + { + let path = path.make(&self); + Pat::TupleStruct(PatTupleStruct { + attrs: self.attrs, + qself, + path, + paren_token: token::Paren(self.span), + elems: punct(elems), + }) + } + // Types pub fn barefn_ty(self, decl: BareFnTyParts) -> Box { diff --git a/c2rust-transpile/src/cfg/mod.rs b/c2rust-transpile/src/cfg/mod.rs index 9ba204b198..1a93f9923c 100644 --- a/c2rust-transpile/src/cfg/mod.rs +++ b/c2rust-transpile/src/cfg/mod.rs @@ -34,7 +34,7 @@ use std::ops::Index; use std::rc::Rc; use std::{fmt, io}; use syn::Lit; -use syn::{spanned::Spanned, Arm, Expr, Pat, Stmt}; +use syn::{punctuated::Punctuated, spanned::Spanned, Arm, Expr, Pat, Stmt}; use failure::format_err; use indexmap::indexset; @@ -448,6 +448,7 @@ impl GenTerminator> { pub struct SwitchCases { cases: Vec<(Pat, Label)>, default: Option