error: No rules expected the token `,` while trying to match the end of the macro
 --> tests/ui/fails.rs:5:5
  |
5 |     constraints![,];
  |     ^^^^^^^^^^^^^^^
  |
  = note: this error originates in the macro `$crate::constraints` which comes from the expansion of the macro `constraints` (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected end of macro invocation
  --> tests/ui/fails.rs:8:18
   |
8  |       let [a, b] = constraints![
   |  __________________^
9  | |       == 1/2,
10 | |       == 2,
11 | |     ];
   | |_____^ missing tokens in macro arguments
   |
note: while trying to match `==`
  --> src/layout.rs
   |
   |     (== $token:tt %) => {
   |      ^^
   = note: this error originates in the macro `$crate::constraints` which comes from the expansion of the macro `constraints` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no rules expected the token `;`
  --> tests/ui/fails.rs:15:53
   |
15 |     let [a, b, c] = constraints![ == 1, == 10%, == 2; 4];
   |                                                     ^ no rules expected this token in macro call
   |
note: while trying to match `%`
  --> src/layout.rs
   |
   |     (== $token:tt %) => {
   |                   ^

error: first parameter must be a formatting specifier followed by a comma OR a `Style` followed by a semicolon
  --> tests/ui/fails.rs:17:13
   |
17 |     let _ = span!(Modifier::BOLD, "hello world");
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: this error originates in the macro `span` (in Nightly builds, run with -Z macro-backtrace for more info)

error: argument never used
  --> tests/ui/fails.rs:19:28
   |
19 |     let _ = span!("hello", "hello world");
   |                   -------  ^^^^^^^^^^^^^ argument never used
   |                   |
   |                   formatting specifier missing

error[E0527]: pattern requires 2 elements but array has 3
 --> tests/ui/fails.rs:8:9
  |
8 |     let [a, b] = constraints![
  |         ^^^^^^ expected 3 elements