loop_match: fix 'no terminator on block'
This commit is contained in:
@@ -936,7 +936,9 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||||||
|
|
||||||
valtree
|
valtree
|
||||||
}
|
}
|
||||||
Err(ErrorHandled::Reported(..)) => return self.cfg.start_new_block().unit(),
|
Err(ErrorHandled::Reported(..)) => {
|
||||||
|
return block.unit();
|
||||||
|
}
|
||||||
Err(ErrorHandled::TooGeneric(_)) => {
|
Err(ErrorHandled::TooGeneric(_)) => {
|
||||||
self.tcx.dcx().emit_fatal(ConstContinueBadConst { span: constant.span });
|
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`.
|
||||||
Reference in New Issue
Block a user