Skip to content

Commit 2bcd663

Browse files
m-ou-selrh2000
authored andcommitted
Add reserved_prefixe tests for macros from different editions.
1 parent 7490305 commit 2bcd663

5 files changed

+112
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// force-host
2+
// edition:2018
3+
// no-prefer-dynamic
4+
5+
#![crate_type = "proc-macro"]
6+
7+
extern crate proc_macro;
8+
9+
use proc_macro::TokenStream;
10+
use std::str::FromStr;
11+
12+
#[proc_macro]
13+
pub fn number_of_tokens_in_a_prefixed_integer_literal(_: TokenStream) -> TokenStream {
14+
TokenStream::from_str("hey#123").unwrap().into_iter().count().to_string().parse().unwrap()
15+
}
16+
17+
#[proc_macro]
18+
pub fn number_of_tokens_in_a_prefixed_char_literal(_: TokenStream) -> TokenStream {
19+
TokenStream::from_str("hey#'a'").unwrap().into_iter().count().to_string().parse().unwrap()
20+
}
21+
22+
#[proc_macro]
23+
pub fn number_of_tokens_in_a_prefixed_string_literal(_: TokenStream) -> TokenStream {
24+
TokenStream::from_str("hey#\"abc\"").unwrap().into_iter().count().to_string().parse().unwrap()
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// force-host
2+
// edition:2021
3+
// no-prefer-dynamic
4+
5+
#![crate_type = "proc-macro"]
6+
7+
extern crate proc_macro;
8+
9+
use proc_macro::TokenStream;
10+
use std::str::FromStr;
11+
12+
#[proc_macro]
13+
pub fn number_of_tokens_in_a_prefixed_integer_literal(_: TokenStream) -> TokenStream {
14+
TokenStream::from_str("hey#123").unwrap().into_iter().count().to_string().parse().unwrap()
15+
}
16+
17+
#[proc_macro]
18+
pub fn number_of_tokens_in_a_prefixed_char_literal(_: TokenStream) -> TokenStream {
19+
TokenStream::from_str("hey#'a'").unwrap().into_iter().count().to_string().parse().unwrap()
20+
}
21+
22+
#[proc_macro]
23+
pub fn number_of_tokens_in_a_prefixed_string_literal(_: TokenStream) -> TokenStream {
24+
TokenStream::from_str("hey#\"abc\"").unwrap().into_iter().count().to_string().parse().unwrap()
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// edition:2018
2+
// aux-build:reserved-prefixes-macro-2018.rs
3+
// aux-build:reserved-prefixes-macro-2021.rs
4+
5+
extern crate reserved_prefixes_macro_2018 as m2018;
6+
extern crate reserved_prefixes_macro_2021 as m2021;
7+
8+
fn main() {
9+
// Ok:
10+
m2018::number_of_tokens_in_a_prefixed_integer_literal!();
11+
m2018::number_of_tokens_in_a_prefixed_char_literal!();
12+
m2018::number_of_tokens_in_a_prefixed_string_literal!();
13+
14+
// Error, even though *this* crate is 2018:
15+
m2021::number_of_tokens_in_a_prefixed_integer_literal!();
16+
//~^ ERROR prefix `hey` is unknown
17+
m2021::number_of_tokens_in_a_prefixed_char_literal!();
18+
//~^ ERROR prefix `hey` is unknown
19+
m2021::number_of_tokens_in_a_prefixed_string_literal!();
20+
//~^ ERROR prefix `hey` is unknown
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
error: prefix `hey` is unknown
2+
--> $DIR/reserved-prefixes-via-macro-2.rs:15:5
3+
|
4+
LL | m2021::number_of_tokens_in_a_prefixed_integer_literal!();
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
6+
|
7+
= note: prefixed identifiers and literals are reserved since Rust 2021
8+
= 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)
9+
10+
error: prefix `hey` is unknown
11+
--> $DIR/reserved-prefixes-via-macro-2.rs:17:5
12+
|
13+
LL | m2021::number_of_tokens_in_a_prefixed_char_literal!();
14+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
15+
|
16+
= note: prefixed identifiers and literals are reserved since Rust 2021
17+
= 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)
18+
19+
error: prefix `hey` is unknown
20+
--> $DIR/reserved-prefixes-via-macro-2.rs:19:5
21+
|
22+
LL | m2021::number_of_tokens_in_a_prefixed_string_literal!();
23+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown prefix
24+
|
25+
= note: prefixed identifiers and literals are reserved since Rust 2021
26+
= 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)
27+
28+
error: aborting due to 3 previous errors
29+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// run-pass
2+
// edition:2021
3+
// aux-build:reserved-prefixes-macro-2018.rs
4+
5+
extern crate reserved_prefixes_macro_2018 as m2018;
6+
7+
fn main() {
8+
// Ok, even though *this* crate is 2021:
9+
assert_eq!(m2018::number_of_tokens_in_a_prefixed_integer_literal!(), 3);
10+
assert_eq!(m2018::number_of_tokens_in_a_prefixed_char_literal!(), 3);
11+
assert_eq!(m2018::number_of_tokens_in_a_prefixed_string_literal!(), 3);
12+
}

0 commit comments

Comments
 (0)