{"record":{"id":"3433d87e8a7745c5","repo":"oxc-project/oxc","slug":"duplicate-property-found","errorCode":null,"errorMessage":"Duplicate @property found.","messagePattern":"Duplicate @property found\\.","errorType":"validation","errorClass":"OxcDiagnostic","httpStatus":null,"severity":"error","filePath":"crates/oxc_linter/src/rules/jsdoc/check_property_names.rs","lineNumber":109,"sourceCode":"                    // `foo[].bar` -> `foo[]` -> `foo`\n                    let parent_name = type_name[..dot_idx].trim_end_matches(\"[]\");\n\n                    if !seen.contains_key(&parent_name) {\n                        ctx.diagnostic(no_root(name_part.span, type_name));\n                    }\n                }\n\n                // Check duplicated(report later)\n                seen.entry(type_name).or_default().insert(name_part.span);\n            }\n\n            for (type_name, spans) in seen.iter().filter(|(_, spans)| 1 < spans.len()) {\n                let labels = spans\n                    .iter()\n                    .map(|span| LabeledSpan::at(span.start..span.end, \"Duplicated property\"))\n                    .collect::<Vec<_>>();\n                ctx.diagnostic(\n                    OxcDiagnostic::warn(\"Duplicate @property found.\")\n                        .with_help(format!(\n                            \"@property `{type_name}` is duplicated on the same block.\"\n                        ))\n                        .with_labels(labels),\n                );\n            }\n        }\n    }\n}\n\n#[test]\nfn test() {\n    use crate::tester::Tester;\n\n    let pass = vec![\n        (\n            \"\n\t\t\t          /**","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/oxc-project/oxc/blob/e1e7af627c8843ab64044ed466b128fcc21a035b/crates/oxc_linter/src/rules/jsdoc/check_property_names.rs#L91-L127","documentation":"Fires from jsdoc/check-property-names when two or more @property tags in the same JSDoc block declare the same name path. run_once groups collected spans by type_name and reports groups with more than one span, labeling every duplicate occurrence.","triggerScenarios":"Thrown at crates/oxc_linter/src/rules/jsdoc/check_property_names.rs:109 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the duplicate @property tag","If duplicates differ by type path, correct the name so each path is unique"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e1e7af627c8843ab64044ed466b128fcc21a035b","analyzedAt":"2026-08-20T07:01:07.079Z","contentChangedAt":"2026-08-20T07:01:07.079Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}