37 lines
681 B
Rust
37 lines
681 B
Rust
// 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)])
|
|
}
|