common_macro/
utils.rs

1// Copyright 2023 Greptime Team
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use syn::punctuated::Punctuated;
16use syn::spanned::Spanned;
17use syn::token::Comma;
18use syn::{FnArg, Type};
19
20/// Extract the argument list from the annotated function.
21pub(crate) fn extract_input_types(
22    inputs: &Punctuated<FnArg, Comma>,
23) -> Result<Vec<Type>, syn::Error> {
24    inputs
25        .iter()
26        .map(|arg| match arg {
27            FnArg::Receiver(receiver) => Err(syn::Error::new(receiver.span(), "expected bool")),
28            FnArg::Typed(pat_type) => Ok(*pat_type.ty.clone()),
29        })
30        .collect()
31}