loop match: handle opaque patterns

fixes issue 143203
This commit is contained in:
Folkert de Vries
2025-07-01 11:48:42 +02:00
parent aa7cc5d2f4
commit 8fdf0ef0ae
4 changed files with 30 additions and 5 deletions

View File

@@ -2970,6 +2970,9 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
}
Constructor::Wildcard => true,
// Opaque patterns must not be matched on structurally.
Constructor::Opaque(_) => false,
// These we may eventually support:
Constructor::Struct
| Constructor::Ref
@@ -2980,8 +2983,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
| Constructor::Str(_) => bug!("unsupported pattern constructor {:?}", pat.ctor()),
// These should never occur here:
Constructor::Opaque(_)
| Constructor::Never
Constructor::Never
| Constructor::NonExhaustive
| Constructor::Hidden
| Constructor::Missing