diff --git a/quickcheck_macros/Cargo.toml b/quickcheck_macros/Cargo.toml index 1d9041d..d05db15 100644 --- a/quickcheck_macros/Cargo.toml +++ b/quickcheck_macros/Cargo.toml @@ -19,7 +19,7 @@ proc-macro = true [dependencies] proc-macro2 = "1.0" quote = "1.0" -syn = { version = "1.0", features = ["full"] } +syn = { version = "2.0", features = ["full"] } [dev-dependencies] quickcheck = { path = "..", version = "1.0.0" } diff --git a/quickcheck_macros/src/lib.rs b/quickcheck_macros/src/lib.rs index 132e8e0..25eb3fa 100644 --- a/quickcheck_macros/src/lib.rs +++ b/quickcheck_macros/src/lib.rs @@ -33,6 +33,13 @@ pub fn quickcheck(_args: TokenStream, input: TokenStream) -> TokenStream { if errors.is_empty() { let attrs = mem::replace(&mut item_fn.attrs, Vec::new()); let name = &item_fn.sig.ident; + if let Some(variadic) = &item_fn.sig.variadic { + // variadics are just for `extern fn` + errors.push(syn::parse::Error::new( + variadic.span(), + "unsupported variadic", + )); + } let fn_type = syn::TypeBareFn { lifetimes: None, unsafety: item_fn.sig.unsafety.clone(), @@ -40,7 +47,7 @@ pub fn quickcheck(_args: TokenStream, input: TokenStream) -> TokenStream { fn_token: ::default(), paren_token: syn::token::Paren::default(), inputs, - variadic: item_fn.sig.variadic.clone(), + variadic: None, output: item_fn.sig.output.clone(), };