Add reserved_prefixe tests for macros from different editions.
This commit is contained in:
parent
7490305e13
commit
2bcd663100
5 changed files with 112 additions and 0 deletions
|
@ -0,0 +1,25 @@
|
||||||
|
// force-host
|
||||||
|
// edition:2018
|
||||||
|
// no-prefer-dynamic
|
||||||
|
|
||||||
|
#![crate_type = "proc-macro"]
|
||||||
|
|
||||||
|
extern crate proc_macro;
|
||||||
|
|
||||||
|
use proc_macro::TokenStream;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_integer_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#123").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_char_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#'a'").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_string_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#\"abc\"").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
// force-host
|
||||||
|
// edition:2021
|
||||||
|
// no-prefer-dynamic
|
||||||
|
|
||||||
|
#![crate_type = "proc-macro"]
|
||||||
|
|
||||||
|
extern crate proc_macro;
|
||||||
|
|
||||||
|
use proc_macro::TokenStream;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_integer_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#123").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_char_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#'a'").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[proc_macro]
|
||||||
|
pub fn number_of_tokens_in_a_prefixed_string_literal(_: TokenStream) -> TokenStream {
|
||||||
|
TokenStream::from_str("hey#\"abc\"").unwrap().into_iter().count().to_string().parse().unwrap()
|
||||||
|
}
|
21
src/test/ui/rust-2021/reserved-prefixes-via-macro-2.rs
Normal file
21
src/test/ui/rust-2021/reserved-prefixes-via-macro-2.rs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
// edition:2018
|
||||||
|
// aux-build:reserved-prefixes-macro-2018.rs
|
||||||
|
// aux-build:reserved-prefixes-macro-2021.rs
|
||||||
|
|
||||||
|
extern crate reserved_prefixes_macro_2018 as m2018;
|
||||||
|
extern crate reserved_prefixes_macro_2021 as m2021;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// Ok:
|
||||||
|
m2018::number_of_tokens_in_a_prefixed_integer_literal!();
|
||||||
|
m2018::number_of_tokens_in_a_prefixed_char_literal!();
|
||||||
|
m2018::number_of_tokens_in_a_prefixed_string_literal!();
|
||||||
|
|
||||||
|
// Error, even though *this* crate is 2018:
|
||||||
|
m2021::number_of_tokens_in_a_prefixed_integer_literal!();
|
||||||
|
//~^ ERROR prefix `hey` is unknown
|
||||||
|
m2021::number_of_tokens_in_a_prefixed_char_literal!();
|
||||||
|
//~^ ERROR prefix `hey` is unknown
|
||||||
|
m2021::number_of_tokens_in_a_prefixed_string_literal!();
|
||||||
|
//~^ ERROR prefix `hey` is unknown
|
||||||
|
}
|
29
src/test/ui/rust-2021/reserved-prefixes-via-macro-2.stderr
Normal file
29
src/test/ui/rust-2021/reserved-prefixes-via-macro-2.stderr
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
error: prefix `hey` is unknown
|
||||||
|
--> $DIR/reserved-prefixes-via-macro-2.rs:15:5
|
||||||
|
|
|
||||||
|
LL | m2021::number_of_tokens_in_a_prefixed_integer_literal!();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
|
||||||
|
|
|
||||||
|
= note: prefixed identifiers and literals are reserved since Rust 2021
|
||||||
|
= note: this error originates in the macro `m2021::number_of_tokens_in_a_prefixed_integer_literal` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: prefix `hey` is unknown
|
||||||
|
--> $DIR/reserved-prefixes-via-macro-2.rs:17:5
|
||||||
|
|
|
||||||
|
LL | m2021::number_of_tokens_in_a_prefixed_char_literal!();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
|
||||||
|
|
|
||||||
|
= note: prefixed identifiers and literals are reserved since Rust 2021
|
||||||
|
= note: this error originates in the macro `m2021::number_of_tokens_in_a_prefixed_char_literal` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: prefix `hey` is unknown
|
||||||
|
--> $DIR/reserved-prefixes-via-macro-2.rs:19:5
|
||||||
|
|
|
||||||
|
LL | m2021::number_of_tokens_in_a_prefixed_string_literal!();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
|
||||||
|
|
|
||||||
|
= note: prefixed identifiers and literals are reserved since Rust 2021
|
||||||
|
= note: this error originates in the macro `m2021::number_of_tokens_in_a_prefixed_string_literal` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
12
src/test/ui/rust-2021/reserved-prefixes-via-macro.rs
Normal file
12
src/test/ui/rust-2021/reserved-prefixes-via-macro.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// run-pass
|
||||||
|
// edition:2021
|
||||||
|
// aux-build:reserved-prefixes-macro-2018.rs
|
||||||
|
|
||||||
|
extern crate reserved_prefixes_macro_2018 as m2018;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// Ok, even though *this* crate is 2021:
|
||||||
|
assert_eq!(m2018::number_of_tokens_in_a_prefixed_integer_literal!(), 3);
|
||||||
|
assert_eq!(m2018::number_of_tokens_in_a_prefixed_char_literal!(), 3);
|
||||||
|
assert_eq!(m2018::number_of_tokens_in_a_prefixed_string_literal!(), 3);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue