{"record":{"id":"7ca1f07af9f43295","repo":"influxdata/influxdb","slug":"missing-shape-0x-build-with-a-placeholder-to-be-told-the","errorCode":null,"errorMessage":"missing `shape = 0x…` — build with a placeholder to be told the expected value","messagePattern":"missing `shape = 0x…` — build with a placeholder to be told the expected value","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"influxdb3_catalog_macros/src/lib.rs","lineNumber":136,"sourceCode":"                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            )\n        })?;\n        let shape = shape.ok_or_else(|| {\n            syn::Error::new(\n                proc_macro2::Span::call_site(),\n                \"missing `shape = 0x…` — build with a placeholder to be told the expected value\",\n            )\n        })?;\n\n        Ok(Self {\n            id,\n            shape: shape.base10_parse()?,\n            shape_span: shape.span(),\n            flags,\n        })\n    }\n}\n\nfn expand(metas: Punctuated<Meta, Token![,]>, item: ItemStruct) -> syn::Result<TokenStream2> {\n    let args = Args::parse(metas)?;\n\n    if !item.generics.params.is_empty() {","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog_macros/src/lib.rs#L118-L154","documentation":"A compile-time proc-macro error raised when a catalog record definition omits the required `shape` argument; building with a placeholder shape makes the macro report the expected value so the correct `shape = 0x…` can be filled in.","triggerScenarios":"Invoking the macro with `id` but no `shape`, e.g. `#[catalog(id = record_ids::X)]`, or after removing a placeholder shape during refactoring.","commonSituations":"Defining a new record and not knowing the shape yet; deleting the shape line while silencing an earlier error; assuming shape is derived automatically.","solutions":["Add `shape = 0x…` with a placeholder literal (e.g. `0x0`) and build; the compiler message tells you the expected value, then paste it in","Check git history for the record's previous shape value","Look at sibling record definitions for the format of a valid shape"],"exampleFix":"// before\n#[catalog(id = record_ids::MyRecord)]\n// after\n#[catalog(id = record_ids::MyRecord, shape = 0x0)] // build to learn expected value, then replace","handlingStrategy":"validation","validationCode":"// Attribute must contain a shape literal:\n// bad:  #[catalog(id = record_ids::X)]\n// good: #[catalog(id = record_ids::X, shape = 0x0)] // 0x0 placeholder; build to learn expected value","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never omit shape; use a placeholder to trigger the helpful diagnostic","Keep id and shape together when copying/refactoring attributes","Record the final shape value in the constant's documentation"],"tags":["rust","proc-macro","missing-argument","attribute","shape"],"backgroundTag":"missing-required-argument","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"}