about summary refs log tree commit diff
path: root/tests/ui/resolve/auxiliary/proc_macro_generate_packed.rs
blob: 9a9e0eb3ff7589af0f7db06ca1455b04ff595b86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
extern crate proc_macro;

use proc_macro::*;

#[proc_macro_attribute]
pub fn proc_macro_attribute_that_generates_repr_packed(
    _attr: TokenStream,
    item: TokenStream,
) -> TokenStream {
    let repr = vec![TokenTree::Ident(Ident::new("packed", Span::call_site()))].into_iter();
    let attr = vec![
        TokenTree::Ident(Ident::new("repr", Span::call_site())),
        TokenTree::Group(Group::new(Delimiter::Parenthesis, repr.collect())),
    ]
    .into_iter();
    vec![
        TokenTree::Punct(Punct::new('#', Spacing::Alone)),
        TokenTree::Group(Group::new(Delimiter::Bracket, attr.collect())),
    ]
    .into_iter()
    .chain(item)
    .collect()
}