diff options
Diffstat (limited to 'tests/ui/proc-macro/span-preservation.rs')
-rw-r--r-- | tests/ui/proc-macro/span-preservation.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/ui/proc-macro/span-preservation.rs b/tests/ui/proc-macro/span-preservation.rs new file mode 100644 index 000000000..0c7358655 --- /dev/null +++ b/tests/ui/proc-macro/span-preservation.rs @@ -0,0 +1,57 @@ +// For each of these, we should get the appropriate type mismatch error message, +// and the function should be echoed. + +// aux-build:test-macros.rs + +#[macro_use] +extern crate test_macros; + +#[recollect_attr] +fn a() { + let x: usize = "hello"; //~ ERROR mismatched types +} + +#[recollect_attr] +fn b(x: Option<isize>) -> usize { + match x { + Some(x) => { return x }, //~ ERROR mismatched types + None => 10 + } +} + +#[recollect_attr] +fn c() { + struct Foo { + a: usize + } + + struct Bar { + a: usize, + b: usize + } + + let x = Foo { a: 10isize }; //~ ERROR mismatched types + let y = Foo { a: 10, b: 10isize }; //~ ERROR has no field named `b` +} + +#[recollect_attr] +extern "C" fn bar() { + 0 //~ ERROR mismatched types +} + +#[recollect_attr] +extern "C" fn baz() { + 0 //~ ERROR mismatched types +} + +#[recollect_attr] +extern "Rust" fn rust_abi() { + 0 //~ ERROR mismatched types +} + +#[recollect_attr] +extern "\x43" fn c_abi_escaped() { + 0 //~ ERROR mismatched types +} + +fn main() {} |