{"record":{"id":"e77834f1a70ce909","repo":"rust-lang/rust-analyzer","slug":"not-implemented","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/hir-ty/src/diagnostics/match_check/pat_analysis.rs","lineNumber":254,"sourceCode":"            }\n            PatKind::Or { pats } => {\n                ctor = Or;\n                fields = pats\n                    .iter()\n                    .enumerate()\n                    .map(|(i, pat)| self.lower_pat(pat).at_index(i))\n                    .collect();\n                arity = pats.len();\n            }\n        }\n        DeconstructedPat::new(ctor, fields, arity, pat.ty, ())\n    }\n\n    pub(crate) fn hoist_witness_pat(&self, pat: &WitnessPat<'a, 'db>) -> Pat<'db> {\n        let mut subpatterns = pat.iter_fields().map(|p| self.hoist_witness_pat(p));\n        let kind = match pat.ctor() {\n            &Bool(value) => PatKind::LiteralBool { value },\n            IntRange(_) => unimplemented!(),\n            Struct | Variant(_) | UnionField => match pat.ty().kind() {\n                TyKind::Tuple(..) => PatKind::Leaf {\n                    subpatterns: subpatterns\n                        .zip(0u32..)\n                        .map(|(p, i)| FieldPat {\n                            field: LocalFieldId::from_raw(i.into()),\n                            pattern: p,\n                        })\n                        .collect(),\n                },\n                TyKind::Adt(adt, substs) => {\n                    let variant =\n                        Self::variant_id_for_adt(self.db, pat.ctor(), adt.def_id()).unwrap();\n                    let subpatterns = self\n                        .list_variant_fields(*pat.ty(), variant)\n                        .zip(subpatterns)\n                        .map(|((field, _ty), pattern)| FieldPat { field, pattern })\n                        .collect();","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/rust-lang/rust-analyzer/blob/e8f7e90aa3e7b26aa9a000200f606c1078da99ec/crates/hir-ty/src/diagnostics/match_check/pat_analysis.rs#L236-L272","documentation":"An `unimplemented!()` panic inside the match exhaustiveness lowering/hoisting code: `hoist_witness_pat` encountered a `WitnessPat` constructor kind it has no arm for when converting the deconstructed witness pattern back into a `Pat`. It means the pattern-analysis state machine reached a case the hoisting side never implemented (the lowering side supports more constructors than hoisting).","triggerScenarios":"Thrown at crates/hir-ty/src/diagnostics/match_check/pat_analysis.rs:254 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Find which `WitnessPat` constructor (e.g. wildcard, ascribe, or newer ctor kinds added to lowering) lacks a matching arm in `hoist_witness_pat` and add a hoisting branch for it","Fall back to a wildcard pattern for the unhandled constructor instead of panicking, since a witness is only advisory output for missing-match diagnostics","Reproduce with a match that triggers the missing arm and add a regression test in the match_check fixture suite"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e8f7e90aa3e7b26aa9a000200f606c1078da99ec","analyzedAt":"2026-09-03T21:08:06.959Z","contentChangedAt":"2026-09-03T21:08:06.959Z","schemaVersion":2},"datasetVersion":"2026-09-11T07:07:21.782Z"}