// SPDX-License-Identifier: GPL-2.0

use proc_macro2::{
    Ident,
    TokenStream,
    TokenTree, //
};
use syn::{
    parse::{
        Parse,
        ParseStream, //
    },
    Result,
    Token, //
};

pub(crate) struct Input {
    a: Ident,
    _comma: Token![,],
    b: Ident,
}

impl Parse for Input {
    fn parse(input: ParseStream<'_>) -> Result<Self> {
        Ok(Self {
            a: input.parse()?,
            _comma: input.parse()?,
            b: input.parse()?,
        })
    }
}

pub(crate) fn concat_idents(Input { a, b, .. }: Input) -> TokenStream {
    let res = Ident::new(&format!("{a}{b}"), b.span());
    TokenStream::from_iter([TokenTree::Ident(res)])
}