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
- 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.