BurntSushi/quickcheck

Trivial cast error when using `#[quickcheck]` inside macro

Open

#261 opened on Nov 27, 2020

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Rust (161 forks)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (2,763 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

This is a minimal example:

crate::my_macro!(u32);

#[macro_export]
macro_rules! my_macro {
    ($my_type:ty) => {
        #[quickcheck]
        fn fuzz_my_type(my: $my_type) {
            // ...
        }
    }
}

Results in

error: trivial cast: `fn(u32) {fuzz_my_type::fuzz_my_type}` as `fn(u32)`
   --> ~/fuzz_tests.rs:13:9
    |
  2 |   crate::my_macro!(u32);
    |   ---------------------- in this macro invocation
... 
 13 | /         #[quickcheck]
 14 | |         fn fuzz_my_type(my: $my_type) {
    | |_______________________^

It works if I add #[allow(trivial_casts)], but it should work without flags to the compiler.

Contributor guide