Rollup merge of #75084 - Aaron1011:stabilize/ident-new-raw, r=petrochenkov
Stabilize Ident::new_raw Tracking issue: #54723 This is a continuation of PR #59002
This commit is contained in:
commit
622759d129
4 changed files with 66 additions and 2 deletions
35
src/test/ui/proc-macro/auxiliary/raw-ident.rs
Normal file
35
src/test/ui/proc-macro/auxiliary/raw-ident.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
// force-host
|
||||
// no-prefer-dynamic
|
||||
|
||||
#![crate_type = "proc-macro"]
|
||||
|
||||
extern crate proc_macro;
|
||||
use proc_macro::{TokenStream, TokenTree, Ident, Punct, Spacing, Span};
|
||||
|
||||
#[proc_macro]
|
||||
pub fn make_struct(input: TokenStream) -> TokenStream {
|
||||
match input.into_iter().next().unwrap() {
|
||||
TokenTree::Ident(ident) => {
|
||||
vec![
|
||||
TokenTree::Ident(Ident::new("struct", Span::call_site())),
|
||||
TokenTree::Ident(Ident::new_raw(&ident.to_string(), Span::call_site())),
|
||||
TokenTree::Punct(Punct::new(';', Spacing::Alone))
|
||||
].into_iter().collect()
|
||||
}
|
||||
_ => panic!()
|
||||
}
|
||||
}
|
||||
|
||||
#[proc_macro]
|
||||
pub fn make_bad_struct(input: TokenStream) -> TokenStream {
|
||||
match input.into_iter().next().unwrap() {
|
||||
TokenTree::Ident(ident) => {
|
||||
vec![
|
||||
TokenTree::Ident(Ident::new_raw("struct", Span::call_site())),
|
||||
TokenTree::Ident(Ident::new(&ident.to_string(), Span::call_site())),
|
||||
TokenTree::Punct(Punct::new(';', Spacing::Alone))
|
||||
].into_iter().collect()
|
||||
}
|
||||
_ => panic!()
|
||||
}
|
||||
}
|
||||
16
src/test/ui/proc-macro/raw-ident.rs
Normal file
16
src/test/ui/proc-macro/raw-ident.rs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// aux-build:raw-ident.rs
|
||||
|
||||
#[macro_use] extern crate raw_ident;
|
||||
|
||||
fn main() {
|
||||
make_struct!(fn);
|
||||
make_struct!(Foo);
|
||||
make_struct!(await);
|
||||
|
||||
r#fn;
|
||||
r#Foo;
|
||||
Foo;
|
||||
r#await;
|
||||
|
||||
make_bad_struct!(S); //~ ERROR expected one of
|
||||
}
|
||||
10
src/test/ui/proc-macro/raw-ident.stderr
Normal file
10
src/test/ui/proc-macro/raw-ident.stderr
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `S`
|
||||
--> $DIR/raw-ident.rs:15:5
|
||||
|
|
||||
LL | make_bad_struct!(S);
|
||||
| ^^^^^^^^^^^^^^^^^^^^ expected one of 8 possible tokens
|
||||
|
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue