accepts_codegen/acceptor/linear/
expand.rs1use proc_macro2::TokenStream;
2use syn::parse::{ParseStream, Parser};
3
4use crate::common::{
5 context::CodegenContext, function::map_err_to_compile_error, macros::ok_or_return,
6};
7
8use super::{builder::build_linear_accepts_spec, config::default_config_list_parser};
9
10pub fn expand(ctx: &CodegenContext, input: TokenStream) -> TokenStream {
11 let configs = ok_or_return!(map_err_to_compile_error(
12 (|i: ParseStream| { default_config_list_parser(i) }).parse2(input)
13 ));
14
15 let mut tokens = TokenStream::new();
16
17 for config in configs {
18 let spec = ok_or_return!(map_err_to_compile_error(build_linear_accepts_spec(
19 ctx, &config
20 )));
21 spec.into_tokens(ctx, &mut tokens);
22 }
23
24 tokens
25}