| 1 | //! Private compile failure tests. |
| 2 | //! |
| 3 | //! # Repeated Options |
| 4 | //! |
| 5 | //! Options repeated in `#[divan::bench]` should cause a compile error, even if |
| 6 | //! they use raw identifiers. The initial implementation allowed raw identifiers |
| 7 | //! to slip through because `syn::Ident` does not consider them to be equal to |
| 8 | //! the normal form without the `r#` prefix. |
| 9 | //! |
| 10 | //! We don't include `r#crate` here because it's not a valid identifier. |
| 11 | //! |
| 12 | //! ```compile_fail |
| 13 | //! #[divan::bench(name = "x" , r#name = "x" )] |
| 14 | //! fn bench() {} |
| 15 | //! ``` |
| 16 | //! |
| 17 | //! ```compile_fail |
| 18 | //! #[divan::bench(sample_count = 1, r#sample_count = 1)] |
| 19 | //! fn bench() {} |
| 20 | //! ``` |
| 21 | //! |
| 22 | //! ```compile_fail |
| 23 | //! #[divan::bench(sample_size = 1, r#sample_size = 1)] |
| 24 | //! fn bench() {} |
| 25 | //! ``` |
| 26 | //! |
| 27 | //! # Type Checking |
| 28 | //! |
| 29 | //! The following won't produce any benchmarks because `types = []`. However, we |
| 30 | //! still want to ensure that values in `consts = [...]` match the generic |
| 31 | //! const's type of `i32`. |
| 32 | //! |
| 33 | //! ```compile_fail |
| 34 | //! #[divan::bench(types = [], consts = ['a' , 'b' , 'c' ])] |
| 35 | //! fn bench<T, const C: i32>() {} |
| 36 | //! ``` |
| 37 | |