Add test for incorrect macro span replacement

This commit is contained in:
Esteban Küber 2025-11-08 22:26:43 +00:00
parent 198328ad79
commit 507b67f457
2 changed files with 45 additions and 0 deletions

View file

@ -0,0 +1,16 @@
macro_rules! macro_with_format { () => {
fn check_5(arg : usize) -> String {
let s : &str;
if arg < 5 {
s = format!("{arg}");
} else {
s = String::new(); //~ ERROR mismatched types
}
String::from(s)
}
}}
fn main() {
macro_with_format!(); //~ ERROR mismatched types
println!( "{}", check_5(6) );
}

View file

@ -0,0 +1,29 @@
error[E0308]: mismatched types
--> $DIR/macro-span-caller-replacement.rs:5:17
|
LL | macro_with_format!();
| ^^^^^^^^^^^^^^^^^^^^ expected `&str`, found `String`
|
= note: this error originates in the macro `format` which comes from the expansion of the macro `macro_with_format` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> $DIR/macro-span-caller-replacement.rs:7:17
|
LL | let s : &str;
| ---- expected due to this type
...
LL | s = String::new();
| ^^^^^^^^^^^^^ expected `&str`, found `String`
...
LL | macro_with_format!();
| -------------------- in this macro invocation
|
= note: this error originates in the macro `macro_with_format` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider borrowing here
|
LL | s = &String::new();
| +
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0308`.