zed-industries/zed · error · syn::Error

unexpected path

Error message

unexpected path

What it means

Returned while parsing #[gpui::test] macro arguments when a Meta::Path variant appears — an argument given as a bare path with no `=` value or parenthesized list. Such an argument cannot be interpreted as any known test option, so parsing aborts with this error at that span.

Source

Thrown at crates/gpui_macros/src/test.rs:39

    fn parse(input: ParseStream) -> Result<Self, syn::Error> {
        let mut seeds = Vec::<u64>::new();
        let mut max_retries = 0;
        let mut max_iterations = 1;
        let mut on_failure_fn_name = quote!(None);

        let metas = Punctuated::<Meta, Token![,]>::parse_terminated(input)?;

        for meta in metas {
            let ident = {
                let meta_path = match &meta {
                    Meta::NameValue(meta) => &meta.path,
                    Meta::List(list) => &list.path,
                    Meta::Path(path) => {
                        return Err(syn::Error::new(path.span(), "invalid path argument"));
                    }
                };
                let Some(ident) = meta_path.get_ident() else {
                    return Err(syn::Error::new(meta_path.span(), "unexpected path"));
                };
                ident.to_string()
            };

            match (&meta, ident.as_str()) {
                (Meta::NameValue(meta), "retries") => {
                    max_retries = parse_usize_from_expr(&meta.value)?
                }
                (Meta::NameValue(meta), "iterations") => {
                    max_iterations = parse_usize_from_expr(&meta.value)?
                }
                (Meta::NameValue(meta), "on_failure") => {
                    let Expr::Lit(ExprLit {
                        lit: Lit::Str(name),
                        ..
                    }) = &meta.value
                    else {
                        return Err(syn::Error::new(

View on GitHub (pinned to f4178619ac)

Solutions

  1. Convert the argument to a name=value form (e.g. retries = 3)
  2. Remove the bare flag; the macro has no boolean flag options
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/gpui_macros/src/test.rs:39 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/23b91cb7a5053898. Report an issue: GitHub.