Skip to content

Commit

Permalink
Add reserved_prefixe tests for macros from different editions.
Browse files Browse the repository at this point in the history
  • Loading branch information
m-ou-se authored and lrh2000 committed Jun 26, 2021
1 parent 7490305 commit 2bcd663
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs
Original file line number Diff line number Diff line change
@@ -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()
}
25 changes: 25 additions & 0 deletions src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 21 additions & 0 deletions src/test/ui/rust-2021/reserved-prefixes-via-macro-2.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 29 additions & 0 deletions src/test/ui/rust-2021/reserved-prefixes-via-macro-2.stderr
Original file line number Diff line number Diff line change
@@ -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 changes: 12 additions & 0 deletions src/test/ui/rust-2021/reserved-prefixes-via-macro.rs
Original file line number Diff line number Diff line change
@@ -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);
}

0 comments on commit 2bcd663

Please sign in to comment.