//@ force-host
//@ no-prefer-dynamic

#![crate_type = "proc-macro"]

extern crate proc_macro;

use proc_macro::*;

// This proc macro ignores its input and returns this token stream
//
//   impl <«A1»: Comparable> Comparable for («A1»,) {}
//
// where `«`/`»` are invisible delimiters. This was being misparsed in bug
// #128895.
#[proc_macro]
pub fn main(_input: TokenStream) -> TokenStream {
    let a1 = TokenTree::Group(
        Group::new(
            Delimiter::None,
            std::iter::once(TokenTree::Ident(Ident::new("A1", Span::call_site()))).collect(),
        )
    );
    vec![
        TokenTree::Ident(Ident::new("impl", Span::call_site())),
        TokenTree::Punct(Punct::new('<', Spacing::Alone)),
        a1.clone(),
        TokenTree::Punct(Punct::new(':', Spacing::Alone)),
        TokenTree::Ident(Ident::new("Comparable", Span::call_site())),
        TokenTree::Punct(Punct::new('>', Spacing::Alone)),
        TokenTree::Ident(Ident::new("Comparable", Span::call_site())),
        TokenTree::Ident(Ident::new("for", Span::call_site())),
        TokenTree::Group(
            Group::new(
                Delimiter::Parenthesis,
                vec![
                    a1.clone(),
                    TokenTree::Punct(Punct::new(',', Spacing::Alone)),
                ].into_iter().collect::<TokenStream>(),
            )
        ),
        TokenTree::Group(Group::new(Delimiter::Brace, TokenStream::new())),
    ].into_iter().collect::<TokenStream>()
}
