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 | |