Files
rust/tests/ui/parser/auxiliary/tuple-index-suffix-proc-macro-aux.rs

34 lines
880 B
Rust
Raw Normal View History

#![feature(proc_macro_quote, proc_macro_span)]
extern crate proc_macro;
use proc_macro::{Ident, Literal, Span, TokenStream, TokenTree, quote};
#[proc_macro]
pub fn bad_tup_indexing(input: TokenStream) -> TokenStream {
let tt = input.into_iter().next().unwrap();
let TokenTree::Literal(indexing_expr) = tt else {
unreachable!();
};
quote! { (42,).$indexing_expr }
}
// Expects {IDENT, COMMA, LITERAL}
#[proc_macro]
pub fn bad_tup_struct_indexing(input: TokenStream) -> TokenStream {
let mut input = input.into_iter();
let ident = input.next().unwrap();
let _comma = input.next().unwrap();
let lit = input.next().unwrap();
let TokenTree::Ident(ident) = ident else {
unreachable!("id");
};
let TokenTree::Literal(indexing_expr) = lit else {
unreachable!("lit");
};
quote! { $ident.$indexing_expr }
}