juspay/hyperswitch · error · syn::Error

expected `target = Type`

Error message

expected `target = Type`

What it means

Error "expected `target = Type`" thrown in juspay/hyperswitch.

Source

Thrown at crates/router_derive/src/macros/apply_changeset.rs:13

use quote::quote;
use syn::{parse::Parse, ItemStruct, Path, Token};

/// Parsed contents of `#[apply_changeset(target = TargetType)]`
struct ApplyChangesetAttr {
    target: Path,
}

impl Parse for ApplyChangesetAttr {
    fn parse(input: syn::parse::ParseStream<'_>) -> syn::Result<Self> {
        let ident: syn::Ident = input.parse()?;
        if ident != "target" {
            return Err(syn::Error::new(ident.span(), "expected `target = Type`"));
        }
        input.parse::<Token![=]>()?;
        let target: Path = input.parse()?;
        Ok(Self { target })
    }
}

pub(crate) fn apply_changeset_attribute(
    args: proc_macro2::TokenStream,
    input: proc_macro2::TokenStream,
) -> syn::Result<proc_macro2::TokenStream> {
    let apply_attr: ApplyChangesetAttr = syn::parse2(args)?;
    let target_type = apply_attr.target;

    // Parse the annotated struct
    let mut item: ItemStruct = syn::parse2(input)?;
    let struct_name = &item.ident;
    let generics = &item.generics;

View on GitHub (pinned to 705a321950)

Solutions

  1. Use the attribute in the form target = Type (e.g. #[changeset_options(target = PaymentAttemptUpdate)])

When it happens

Trigger: Thrown at crates/router_derive/src/macros/apply_changeset.rs:13 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/c57bd8a6b880f055. Report an issue: GitHub.