The problematic code:
macro_rules! x {
($a:expr, $b:expr) => {}
}
macro_rules! y {
($a:expr, $b:expr) => {
x!($a, $b)
}
}
// much later
fn foo() {
macro_rules! x {
($a:expr) => {}
}
// later still
y!(1, 2)
}
Rustc output:
error: no rules expected the token `,`
--> <anon>:8:14
8 |> x!($a, $b)
|> ^
Playpen link
This error points out that the y! macro performed an incorrect invocation of the x! macro, but fails to point out which x! macro in particular it is trying to invoke, or the location where the y! macro was invoked. In addition, it doesn't point out tokens which the macro would accept (in this case, the end of the invocation).
The problematic code:
Rustc output:
Playpen link
This error points out that the
y!macro performed an incorrect invocation of thex!macro, but fails to point out whichx!macro in particular it is trying to invoke, or the location where they!macro was invoked. In addition, it doesn't point out tokens which the macro would accept (in this case, the end of the invocation).