diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/crashes/129503.rs | 7 | ||||
| -rw-r--r-- | tests/ui/asm/ice-bad-err-span-in-template-129503.rs | 26 | ||||
| -rw-r--r-- | tests/ui/asm/ice-bad-err-span-in-template-129503.stderr | 28 |
3 files changed, 54 insertions, 7 deletions
diff --git a/tests/crashes/129503.rs b/tests/crashes/129503.rs deleted file mode 100644 index c1ed46e5955..00000000000 --- a/tests/crashes/129503.rs +++ /dev/null @@ -1,7 +0,0 @@ -//@ known-bug: rust-lang/rust#129503 - -use std::arch::asm; - -unsafe fn f6() { - asm!(concat!(r#"lJ�.�"#, "r} {}")); -} diff --git a/tests/ui/asm/ice-bad-err-span-in-template-129503.rs b/tests/ui/asm/ice-bad-err-span-in-template-129503.rs new file mode 100644 index 00000000000..3b4390f881a --- /dev/null +++ b/tests/ui/asm/ice-bad-err-span-in-template-129503.rs @@ -0,0 +1,26 @@ +// Regression test for ICE #129503 + + +// Tests that we come up with decent error spans +// when the template fed to `asm!()` is itself a +// macro call like `concat!()` and should not ICE + +use std::arch::asm; + +fn main() { + // Should not ICE + asm!(concat!(r#"lJ�.�"#, "r} {}")); + //~^ ERROR invalid asm template string: unmatched `}` found + + + // Macro call template: should point to + // everything within `asm!()` as error span + asm!(concat!("abc", "r} {}")); + //~^ ERROR invalid asm template string: unmatched `}` found + + + // Literal template: should point precisely to + // just the `}` as error span + asm!("abc", "r} {}"); + //~^ ERROR invalid asm template string: unmatched `}` found +} diff --git a/tests/ui/asm/ice-bad-err-span-in-template-129503.stderr b/tests/ui/asm/ice-bad-err-span-in-template-129503.stderr new file mode 100644 index 00000000000..ffa9362ed95 --- /dev/null +++ b/tests/ui/asm/ice-bad-err-span-in-template-129503.stderr @@ -0,0 +1,28 @@ +error: invalid asm template string: unmatched `}` found + --> $DIR/ice-bad-err-span-in-template-129503.rs:12:10 + | +LL | asm!(concat!(r#"lJ�.�"#, "r} {}")); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unmatched `}` in asm template string + | + = note: if you intended to print `}`, you can escape it using `}}` + = note: this error originates in the macro `concat` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: invalid asm template string: unmatched `}` found + --> $DIR/ice-bad-err-span-in-template-129503.rs:18:10 + | +LL | asm!(concat!("abc", "r} {}")); + | ^^^^^^^^^^^^^^^^^^^^^^^ unmatched `}` in asm template string + | + = note: if you intended to print `}`, you can escape it using `}}` + = note: this error originates in the macro `concat` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: invalid asm template string: unmatched `}` found + --> $DIR/ice-bad-err-span-in-template-129503.rs:24:19 + | +LL | asm!("abc", "r} {}"); + | ^ unmatched `}` in asm template string + | + = note: if you intended to print `}`, you can escape it using `}}` + +error: aborting due to 3 previous errors + |
