loop_match: fix 'no terminator on block'
This commit is contained in:
parent
c720f49c46
commit
6d58a88c3c
3 changed files with 34 additions and 1 deletions
|
|
@ -936,7 +936,9 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
|
||||
valtree
|
||||
}
|
||||
Err(ErrorHandled::Reported(..)) => return self.cfg.start_new_block().unit(),
|
||||
Err(ErrorHandled::Reported(..)) => {
|
||||
return block.unit();
|
||||
}
|
||||
Err(ErrorHandled::TooGeneric(_)) => {
|
||||
self.tcx.dcx().emit_fatal(ConstContinueBadConst { span: constant.span });
|
||||
}
|
||||
|
|
|
|||
22
tests/ui/loop-match/panic-in-const.rs
Normal file
22
tests/ui/loop-match/panic-in-const.rs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#![allow(incomplete_features)]
|
||||
#![feature(loop_match)]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
const CONST_THAT_PANICS: u8 = panic!("diverge!");
|
||||
//~^ ERROR: evaluation panicked: diverge!
|
||||
|
||||
fn test(mut state: u8) {
|
||||
#[loop_match]
|
||||
loop {
|
||||
state = 'blk: {
|
||||
match state {
|
||||
0 => {
|
||||
#[const_continue]
|
||||
break 'blk CONST_THAT_PANICS;
|
||||
}
|
||||
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
9
tests/ui/loop-match/panic-in-const.stderr
Normal file
9
tests/ui/loop-match/panic-in-const.stderr
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
error[E0080]: evaluation panicked: diverge!
|
||||
--> $DIR/panic-in-const.rs:5:31
|
||||
|
|
||||
LL | const CONST_THAT_PANICS: u8 = panic!("diverge!");
|
||||
| ^^^^^^^^^^^^^^^^^^ evaluation of `CONST_THAT_PANICS` failed here
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue