{"record":{"id":"8239d47195807a47","repo":"swc-project/swc","slug":"failed-to-parse-args-of-ast-serde","errorCode":null,"errorMessage":"failed to parse args of #[ast_serde]","messagePattern":"failed to parse args of #\\[ast_serde\\]","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/ast_node/src/lib.rs","lineNumber":119,"sourceCode":"    // we should use call_site\n    let mut item = TokenStream::new();\n    match input.data {\n        Data::Enum(..) => {\n            if !args.is_empty() {\n                panic!(\"#[ast_serde] on enum does not accept any argument\")\n            }\n\n            item.extend(quote!(\n                #[derive(::serde::Serialize, ::swc_common::DeserializeEnum)]\n                #[serde(untagged)]\n                #input\n            ));\n        }\n        _ => {\n            let args: Option<ast_node_macro::Args> = if args.is_empty() {\n                None\n            } else {\n                Some(parse(args).expect(\"failed to parse args of #[ast_serde]\"))\n            };\n\n            let serde_tag = match input.data {\n                Data::Struct(DataStruct {\n                    fields: Fields::Named(..),\n                    ..\n                }) => {\n                    if args.is_some() {\n                        Some(quote!(#[serde(tag = \"type\")]))\n                    } else {\n                        None\n                    }\n                }\n                _ => None,\n            };\n\n            let serde_rename = args.as_ref().map(|args| {\n                let name = &args.ty;","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/swc-project/swc/blob/5176682b65416c6b5de6b47379ae1588ea3ecb3f/crates/ast_node/src/lib.rs#L101-L137","documentation":"The attribute arguments of #[ast_serde] on a struct (the non-enum arm) failed to parse into ast_node_macro::Args. This fires when the payload inside #[ast_serde(...)] does not match the expected argument grammar — typically a stray, unknown, or malformed option — while enums accept no arguments at all.","triggerScenarios":"Thrown at crates/ast_node/src/lib.rs:119 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep only arguments accepted by ast_node_macro::Args inside #[ast_serde(...)]","On enums, remove all arguments entirely — the enum arm rejects any argument","Consult the ast_node crate docs for the supported attribute argument forms"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5176682b65416c6b5de6b47379ae1588ea3ecb3f","analyzedAt":"2026-08-17T16:16:52.067Z","contentChangedAt":"2026-08-17T16:16:52.067Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}