{"record":{"id":"324f96ef5e6e9165","repo":"influxdata/influxdb","slug":"duplicate-flags","errorCode":null,"errorMessage":"duplicate `flags`","messagePattern":"duplicate `flags`","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"influxdb3_catalog_macros/src/lib.rs","lineNumber":115,"sourceCode":"                \"shape\" => {\n                    let span = nv.value.span();\n                    let Expr::Lit(syn::ExprLit {\n                        lit: syn::Lit::Int(lit),\n                        ..\n                    }) = nv.value\n                    else {\n                        return Err(syn::Error::new(\n                            span,\n                            \"`shape` must be an integer literal, e.g. `shape = 0xbba17476`\",\n                        ));\n                    };\n                    if shape.replace(lit).is_some() {\n                        return Err(syn::Error::new(nv.path.span(), \"duplicate `shape`\"));\n                    }\n                }\n                \"flags\" => {\n                    if flags.replace(nv.value).is_some() {\n                        return Err(syn::Error::new(nv.path.span(), \"duplicate `flags`\"));\n                    }\n                }\n                other => {\n                    return Err(syn::Error::new(\n                        nv.path.span(),\n                        format!(\n                            \"unknown argument `{other}`; supported arguments are `id`, `shape`, `flags`\"\n                        ),\n                    ));\n                }\n            }\n        }\n\n        let id = id.ok_or_else(|| {\n            syn::Error::new(\n                proc_macro2::Span::call_site(),\n                \"missing `id = record_ids::SOME_CONST`\",\n            )","sourceCodeStart":97,"sourceCodeEnd":133,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog_macros/src/lib.rs#L97-L133","documentation":"Compile-time error from the influxdb3_catalog_macros attribute parser: the `flags = <int>` key appears more than once in the macro invocation's attribute list. During `parse`, each recognized key is written into a slot Option, and a repeat assignment triggers this syn::Error at the duplicate key's span. It is a syntax-validation guard over macro input, not a runtime catalog error; resolve by specifying `flags` at most once.","triggerScenarios":"Writing `#[catalog(id = ..., flags = FOO, flags = BAR)]` in the same attribute.","commonSituations":"Combining flags from two examples without merging values; generated attributes appending defaults when flags already exist.","solutions":["Keep one `flags = ...` and merge the intended values into a single expression","Delete the redundant flags entry"],"exampleFix":"// before\n#[catalog(id = record_ids::X, shape = 0x1, flags = A, flags = B)]\n// after\n#[catalog(id = record_ids::X, shape = 0x1, flags = A | B)]","handlingStrategy":"validation","validationCode":"// Exactly one flags argument per attribute; merge values instead:\n// bad:  flags = A, flags = B\n// good: flags = A | B","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Merge flag values into a single expression","Never append a second flags entry when combining examples"],"tags":["rust","proc-macro","duplicate-argument","attribute"],"backgroundTag":"conflicting-config-options","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}