{"record":{"id":"26816748b64a5775","repo":"rust-lang/rust","slug":"unexpected-fields-map","errorCode":null,"errorMessage":"unexpected fields {map:?}","messagePattern":"unexpected fields (.+?)","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"library/compiler-builtins/crates/libm-macros/src/parse.rs","lineNumber":87,"sourceCode":"    pub only_span: Option<Span>,\n    pub fn_extra_span: Option<Span>,\n}\n\nimpl StructuredInput {\n    pub fn from_fields(input: Invocation) -> syn::Result<Self> {\n        let mut map: Vec<_> = input.fields.into_iter().collect();\n        let cb_expr = expect_field(&mut map, \"callback\")?;\n        let emit_types_expr = expect_field(&mut map, \"emit_types\").ok();\n        let skip_expr = expect_field(&mut map, \"skip\").ok();\n        let skip_f16_f128 = expect_field(&mut map, \"skip_f16_f128\").ok();\n        let skip_builtins = expect_field(&mut map, \"skip_builtins\").ok();\n        let only_expr = expect_field(&mut map, \"only\").ok();\n        let attr_expr = expect_field(&mut map, \"attributes\").ok();\n        let extra = expect_field(&mut map, \"extra\").ok();\n        let fn_extra = expect_field(&mut map, \"fn_extra\").ok();\n\n        if !map.is_empty() {\n            Err(syn::Error::new(\n                map.first().unwrap().name.span(),\n                format!(\"unexpected fields {map:?}\"),\n            ))?;\n        }\n\n        let emit_types_span = emit_types_expr.as_ref().map(|expr| expr.span());\n        let emit_types = match emit_types_expr {\n            Some(expr) => Parser::parse2(parse_ident_or_array, expr.into_token_stream())?,\n            None => Vec::new(),\n        };\n\n        let skip = match skip_expr {\n            Some(expr) => Parser::parse2(parse_ident_array, expr.into_token_stream())?,\n            None => Vec::new(),\n        };\n\n        let skip_f16_f128 = match skip_f16_f128 {\n            Some(expr) => expect_litbool(expr)?.value,","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/rust-lang/rust/blob/7088e4b63a9516ebfbfe2ab2d999cf01a528ac14/library/compiler-builtins/crates/libm-macros/src/parse.rs#L69-L105","documentation":"for_each_function! accepts a fixed set of top-level fields: callback, emit_types, skip, skip_f16_f128, skip_builtins, only, attributes, extra, fn_extra (parse.rs:74-91). from_fields() pulls each known field out; any remaining `key: value` mapping is leftover and rejected as unexpected.","triggerScenarios":"Adding an unknown field such as `verbose: true` or misspelling a known field name (e.g. `callbacks:` instead of `callback:`).","commonSituations":"Typoing a field name; assuming a field exists that the macro does not support; stale field from an old macro version.","solutions":["Remove the unexpected field or correct its name to one of the nine accepted fields.","Consult the macro doc comment (lib.rs:48-122) for the authoritative field list."],"exampleFix":"// before\nlibm_macros::for_each_function! {\n    calllback: cb,\n    emit_types: all,\n}\n// after\nlibm_macros::for_each_function! {\n    callback: cb,\n    emit_types: all,\n}","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Copy a working for_each_function! block as a template rather than typing fields from memory.","Treat any 'unexpected fields' error as a typo in a field name first."],"tags":["rust","proc-macro","libm","compile-time","validation"],"backgroundTag":null,"analyzedSha":"7088e4b63a9516ebfbfe2ab2d999cf01a528ac14","analyzedAt":"2026-08-10T14:17:03.603Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}