influxdata/influxdb · error · syn::Error
unknown argument ` `; supported arguments are `id`…
Error message
unknown argument `{other}`; supported arguments are `id`, `shape`, `flags` What it means
A compile-time proc-macro error raised when the catalog record attribute contains an unrecognized `name = value` argument; the parser only supports `id`, `shape`, and `flags`, so any other key aborts macro expansion at that argument's span.
Solutions
- Rename the argument to one of the supported keys: id, shape, flags
- Fix typos in the key name (match exact lowercase identifiers)
- Remove unsupported arguments entirely
Example fix
// before #[catalog(id = record_ids::X, shpae = 0xbba17476)] // after #[catalog(id = record_ids::X, shape = 0xbba17476)]
Defensive patterns
Strategy: validation
Validate before calling
const ALLOWED: [&str; 3] = ["id", "shape", "flags"];
fn key_allowed(k: &str) -> bool { ALLOWED.contains(&k) } Type guard
fn is_valid_key(k: &str) -> bool {
matches!(k, "id" | "shape" | "flags")
} Prevention
- Memorize/use the three supported keys: id, shape, flags
- Double-check spelling of keys — typos surface as unknown arguments
- Consult an existing annotated record for canonical syntax
When it happens
Trigger: Misspelling a supported key (e.g. `Id = ...`, `shpae = 0x…`) or inventing a new key like `version = 1` in the macro attribute.
Common situations: Typos in attribute keys; copying attribute syntax from a different macro family; upgrading the macro where keys changed names.
Understand the failure class
Background: "must be a positive integer", "cannot be empty", "invalid argument": how invalid-argument errors work across open-source libraries — this error's family across 33 libraries.
Related errors
- duplicate `flags`
- duplicate `id`
- duplicate `shape`
- expected an argument name
- expected `name = value`; supported arguments are `id`…
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/cd036177d76d13ab.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_catalog_macros/src/lib.rs:119
..
}) = nv.value
else {
return Err(syn::Error::new(
span,
"`shape` must be an integer literal, e.g. `shape = 0xbba17476`",
));
};
if shape.replace(lit).is_some() {
return Err(syn::Error::new(nv.path.span(), "duplicate `shape`"));
}
}
"flags" => {
if flags.replace(nv.value).is_some() {
return Err(syn::Error::new(nv.path.span(), "duplicate `flags`"));
}
}
other => {
return Err(syn::Error::new(
nv.path.span(),
format!(
"unknown argument `{other}`; supported arguments are `id`, `shape`, `flags`"
),
));
}
}
}
let id = id.ok_or_else(|| {
syn::Error::new(
proc_macro2::Span::call_site(),
"missing `id = record_ids::SOME_CONST`",
)
})?;
let shape = shape.ok_or_else(|| {
syn::Error::new(
proc_macro2::Span::call_site(),View on GitHub (pinned to 06200ef96b)