Add test for ref suggestions in macros.

This commit is contained in:
Mara Bos 2021-06-02 18:10:42 +02:00
parent 80828f26bb
commit e735f6086d
3 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,18 @@
// force-host
// no-prefer-dynamic
#![crate_type = "proc-macro"]
#![feature(proc_macro_quote)]
extern crate proc_macro;
use proc_macro::{quote, TokenStream};
#[proc_macro_attribute]
pub fn hello(_: TokenStream, _: TokenStream) -> TokenStream {
quote!(
fn f(_: &mut i32) {}
fn g() {
f(123);
}
)
}

View file

@ -0,0 +1,29 @@
// run-check
// aux-build:proc-macro-type-error.rs
extern crate proc_macro_type_error;
use proc_macro_type_error::hello;
#[hello] //~ERROR mismatched types
fn abc() {}
fn x(_: &mut i32) {}
macro_rules! bla {
() => {
x(123);
//~^ ERROR mismatched types
//~| SUGGESTION &mut 123
};
($v:expr) => {
x($v)
}
}
fn main() {
bla!();
bla!(456);
//~^ ERROR mismatched types
//~| SUGGESTION &mut 456
}

View file

@ -0,0 +1,34 @@
error[E0308]: mismatched types
--> $DIR/suggest-ref-macro.rs:8:1
|
LL | #[hello]
| ^^^^^^^^ expected `&mut i32`, found integer
|
= note: this error originates in the attribute macro `hello` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> $DIR/suggest-ref-macro.rs:15:11
|
LL | x(123);
| ^^^
| |
| expected `&mut i32`, found integer
| help: consider mutably borrowing here: `&mut 123`
...
LL | bla!();
| ------- in this macro invocation
|
= note: this error originates in the macro `bla` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> $DIR/suggest-ref-macro.rs:26:10
|
LL | bla!(456);
| ^^^
| |
| expected `&mut i32`, found integer
| help: consider mutably borrowing here: `&mut 456`
error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0308`.