zed-industries/zed · error · syn::Error
invalid path argument
Error message
invalid path argument
What it means
Returned by the syn parser for #[gpui::test] macro arguments when a bare path meta (a path with no value or list) is encountered where a named argument like retries = N, seed = [...], or on_failure = "..." was expected. The invalid path argument is the macro input at fault.
Source
Thrown at crates/gpui_macros/src/test.rs:35
on_failure_fn_name: proc_macro2::TokenStream,
}
impl Parse for Args {
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),View on GitHub (pinned to f4178619ac)
Solutions
- Use only supported simple option names (retries, iterations, seed, seeds, on_failure, ...)
- Fix the malformed attribute syntax
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/gpui_macros/src/test.rs:35 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/04604ca61c259c31.
Report an issue: GitHub.