Avoid ICEing without the pattern_types
feature gate
This commit is contained in:
parent
07310e21d4
commit
24ee9b9423
3 changed files with 43 additions and 1 deletions
|
@ -2249,7 +2249,11 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
||||||
Ty::new_pat(tcx, ty, pat)
|
Ty::new_pat(tcx, ty, pat)
|
||||||
}
|
}
|
||||||
hir::PatKind::Err(e) => Ty::new_error(tcx, e),
|
hir::PatKind::Err(e) => Ty::new_error(tcx, e),
|
||||||
_ => span_bug!(pat.span, "unsupported pattern for pattern type: {pat:#?}"),
|
_ => Ty::new_error_with_message(
|
||||||
|
tcx,
|
||||||
|
pat.span,
|
||||||
|
format!("unsupported pattern for pattern type: {pat:#?}"),
|
||||||
|
),
|
||||||
};
|
};
|
||||||
self.record_ty(pat.hir_id, ty, pat.span);
|
self.record_ty(pat.hir_id, ty, pat.span);
|
||||||
pat_ty
|
pat_ty
|
||||||
|
|
15
tests/ui/type/pattern_types/unimplemented_pat.rs
Normal file
15
tests/ui/type/pattern_types/unimplemented_pat.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
//! This test ensures we do not ICE for unimplemented
|
||||||
|
//! patterns unless the feature gate is enabled.
|
||||||
|
|
||||||
|
#![feature(core_pattern_type)]
|
||||||
|
#![feature(core_pattern_types)]
|
||||||
|
|
||||||
|
use std::pat::pattern_type;
|
||||||
|
|
||||||
|
type Always = pattern_type!(Option<u32> is Some(_));
|
||||||
|
//~^ ERROR: pattern types are unstable
|
||||||
|
|
||||||
|
type Binding = pattern_type!(Option<u32> is x);
|
||||||
|
//~^ ERROR: pattern types are unstable
|
||||||
|
|
||||||
|
fn main() {}
|
23
tests/ui/type/pattern_types/unimplemented_pat.stderr
Normal file
23
tests/ui/type/pattern_types/unimplemented_pat.stderr
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
error[E0658]: pattern types are unstable
|
||||||
|
--> $DIR/unimplemented_pat.rs:9:15
|
||||||
|
|
|
||||||
|
LL | type Always = pattern_type!(Option<u32> is Some(_));
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #123646 <https://github.com/rust-lang/rust/issues/123646> for more information
|
||||||
|
= help: add `#![feature(pattern_types)]` to the crate attributes to enable
|
||||||
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
|
error[E0658]: pattern types are unstable
|
||||||
|
--> $DIR/unimplemented_pat.rs:12:16
|
||||||
|
|
|
||||||
|
LL | type Binding = pattern_type!(Option<u32> is x);
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #123646 <https://github.com/rust-lang/rust/issues/123646> for more information
|
||||||
|
= help: add `#![feature(pattern_types)]` to the crate attributes to enable
|
||||||
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0658`.
|
Loading…
Add table
Add a link
Reference in a new issue