cynic_codegen/scalar_derive/
input.rs

1use darling::util::SpannedValue;
2
3#[derive(darling::FromDeriveInput)]
4#[darling(attributes(cynic), supports(struct_newtype))]
5pub struct ScalarDeriveInput {
6    pub(super) ident: proc_macro2::Ident,
7    pub(super) data: darling::ast::Data<(), ScalarDeriveField>,
8    pub(super) generics: syn::Generics,
9
10    #[darling(default, rename = "schema_module")]
11    schema_module_: Option<syn::Path>,
12
13    #[darling(default)]
14    pub(super) graphql_type: Option<SpannedValue<String>>,
15}
16
17#[derive(darling::FromField)]
18#[darling(forward_attrs(arguments))]
19pub struct ScalarDeriveField {
20    pub(super) ty: syn::Type,
21}
22
23impl ScalarDeriveInput {
24    pub fn schema_module(&self) -> syn::Path {
25        if let Some(schema_module) = &self.schema_module_ {
26            return schema_module.clone();
27        }
28        syn::parse2(quote::quote! { schema }).unwrap()
29    }
30}