{"record":{"id":"3d51b6330f3cc1fd","repo":"astral-sh/ruff","slug":"only-named-fields-are-supported","errorCode":null,"errorMessage":"only named fields are supported","messagePattern":"only named fields are supported","errorType":"exception","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"crates/ruff_macros/src/rule_namespace.rs","lineNumber":15,"sourceCode":"use std::cmp::Reverse;\nuse std::collections::HashSet;\n\nuse quote::quote;\nuse syn::spanned::Spanned;\nuse syn::{Attribute, Data, DataEnum, DeriveInput, Error, ExprLit, Lit, Meta, MetaNameValue};\n\npub(crate) fn derive_impl(input: DeriveInput) -> syn::Result<proc_macro2::TokenStream> {\n    let DeriveInput {\n        ident,\n        data: Data::Enum(DataEnum { variants, .. }),\n        ..\n    } = input\n    else {\n        return Err(Error::new(\n            input.ident.span(),\n            \"only named fields are supported\",\n        ));\n    };\n\n    let mut parsed = Vec::new();\n\n    let mut common_prefix_match_arms = quote!();\n    let mut name_match_arms =\n        quote!(Self::Ruff => \"Ruff-specific rules\", Self::Numpy => \"NumPy-specific rules\", );\n    let mut url_match_arms = quote!(Self::Ruff => None, Self::Numpy => None, );\n\n    let mut all_prefixes = HashSet::new();\n\n    for variant in variants {\n        let mut first_chars = HashSet::new();\n        let prefixes: Result<Vec<_>, _> = variant\n            .attrs","sourceCodeStart":1,"sourceCodeEnd":33,"githubUrl":"https://github.com/astral-sh/ruff/blob/26f38c119cac42e4d320ba08f09224fdec74af2c/crates/ruff_macros/src/rule_namespace.rs#L1-L33","documentation":"A syn compile error from the RuleNamespace derive: the input is not an enum (the destructuring expects Data::Enum with named-field variants). The derive builds prefix-to-linter mappings from enum variants, so structs/unions are rejected.","triggerScenarios":"Thrown at crates/ruff_macros/src/rule_namespace.rs:15 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Apply the derive only to enums with named fields","Implement the namespace mapping manually for other shapes"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"26f38c119cac42e4d320ba08f09224fdec74af2c","analyzedAt":"2026-09-05T10:32:37.492Z","contentChangedAt":"2026-09-05T10:32:37.492Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}