diff options
| author | Michael Goulet <michael@errs.io> | 2022-11-11 17:21:53 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-11-11 17:21:58 +0000 |
| commit | 93921dd16d5b2aa2b32af6a3a8550dea57e877e0 (patch) | |
| tree | 3e31107870465fba8bcb75c5afe023ab9fc9d617 | |
| parent | 742d3f02c243964e5b868d90afd60c2907be5853 (diff) | |
| download | rust-93921dd16d5b2aa2b32af6a3a8550dea57e877e0.tar.gz rust-93921dd16d5b2aa2b32af6a3a8550dea57e877e0.zip | |
Don't ICE with inline const errors during MIR build
| -rw-r--r-- | compiler/rustc_mir_build/src/thir/pattern/mod.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/consts/invalid-inline-const-in-match-arm.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/consts/invalid-inline-const-in-match-arm.stderr | 12 |
3 files changed, 24 insertions, 0 deletions
diff --git a/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index 776c748c7e5..80b532aec6c 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/mod.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/mod.rs @@ -577,6 +577,9 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { self.errors.push(PatternError::ConstParamInPattern(span)); return PatKind::Wild; } + ConstKind::Error(_) => { + return PatKind::Wild; + } _ => bug!("Expected ConstKind::Param"), }, mir::ConstantKind::Val(_, _) => self.const_to_pat(value, id, span, false).kind, diff --git a/src/test/ui/consts/invalid-inline-const-in-match-arm.rs b/src/test/ui/consts/invalid-inline-const-in-match-arm.rs new file mode 100644 index 00000000000..4d2d8fb1303 --- /dev/null +++ b/src/test/ui/consts/invalid-inline-const-in-match-arm.rs @@ -0,0 +1,9 @@ +#![allow(incomplete_features)] +#![feature(inline_const_pat)] + +fn main() { + match () { + const { (|| {})() } => {} + //~^ ERROR cannot call non-const closure in constants + } +} diff --git a/src/test/ui/consts/invalid-inline-const-in-match-arm.stderr b/src/test/ui/consts/invalid-inline-const-in-match-arm.stderr new file mode 100644 index 00000000000..ab594c921f9 --- /dev/null +++ b/src/test/ui/consts/invalid-inline-const-in-match-arm.stderr @@ -0,0 +1,12 @@ +error[E0015]: cannot call non-const closure in constants + --> $DIR/invalid-inline-const-in-match-arm.rs:6:17 + | +LL | const { (|| {})() } => {} + | ^^^^^^^^^ + | + = note: closures need an RFC before allowed to be called in constants + = note: calls in constants are limited to constant functions, tuple structs and tuple variants + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0015`. |
