juspay/hyperswitch · error · syn::Error

Only path fields are supported

Error message

Only path fields are supported

What it means

Error "Only path fields are supported" thrown in juspay/hyperswitch.

Source

Thrown at crates/router_derive/src/macros/to_encryptable.rs:50

        .iter()
        .flat_map(|s| s.parse_args::<FieldMeta>())
        .find(|s| s._meta_type.eq("ty"))
}

fn get_inner_type(path: &syn::TypePath) -> syn::Result<syn::TypePath> {
    path.path
        .segments
        .last()
        .and_then(|segment| match &segment.arguments {
            syn::PathArguments::AngleBracketed(args) => args.args.first(),
            _ => None,
        })
        .and_then(|arg| match arg {
            syn::GenericArgument::Type(SynType::Path(path)) => Some(path.clone()),
            _ => None,
        })
        .ok_or_else(|| {
            syn::Error::new(
                proc_macro2::Span::call_site(),
                "Only path fields are supported",
            )
        })
}

/// This function returns the inner most type recursively
/// For example:
///
/// In the case of `Encryptable<Secret<String>>> this returns String
fn get_inner_most_type(ty: SynType) -> syn::Result<Ident> {
    fn get_inner_type_recursive(path: syn::TypePath) -> syn::Result<syn::TypePath> {
        match get_inner_type(&path) {
            Ok(inner_path) => get_inner_type_recursive(inner_path),
            Err(_) => Ok(path),
        }
    }

View on GitHub (pinned to 705a321950)

Solutions

  1. Use only plain path fields (e.g. a::b::Type) in the to_encryptable macro; remove generics or other type syntax

When it happens

Trigger: Thrown at crates/router_derive/src/macros/to_encryptable.rs:50 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juspay/hyperswitch@705a321950 (2026-08-19). Data as JSON: /api/errors/2f53b0e27e16c7f5. Report an issue: GitHub.