Unignore closure-bang.

This test was ignored long ago in
https://github.com/rust-lang/rust/pull/20578/ when the syntax for
closures was changed.

The current status is that a closure with an explicit `!` return type
will trigger the `unreachable_code` lint which appears to be the
original intent of the test
(https://github.com/rust-lang/rust/pull/16836). A closure without a
return type won't trigger the lint since the `!` type isn't inferred
(AFAIK). This restores the test to its original form.
This commit is contained in:
Eric Huss 2023-04-15 14:43:20 -07:00
parent fd57c6b407
commit d7ed5a52ff
2 changed files with 18 additions and 3 deletions

View File

@ -1,9 +1,7 @@
// ignore-test FIXME(#20574)
#![deny(unreachable_code)]
fn main() {
let x = || panic!();
let x = || -> ! { panic!() };
x();
println!("Foo bar"); //~ ERROR: unreachable statement
}

View File

@ -0,0 +1,17 @@
error: unreachable statement
--> $DIR/closure-bang.rs:6:5
|
LL | x();
| --- any code following this expression is unreachable
LL | println!("Foo bar");
| ^^^^^^^^^^^^^^^^^^^ unreachable statement
|
note: the lint level is defined here
--> $DIR/closure-bang.rs:1:9
|
LL | #![deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
= note: this error originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to previous error