blob: a5084b55aac79b87c9603e030ad5020ae32ad392 [file] [log] [blame]
#![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 }
}