diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/never_type/diverging-fallback-control-flow.rs | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/never_type/diverging-fallback-control-flow.rs')
-rw-r--r-- | src/test/ui/never_type/diverging-fallback-control-flow.rs | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/src/test/ui/never_type/diverging-fallback-control-flow.rs b/src/test/ui/never_type/diverging-fallback-control-flow.rs deleted file mode 100644 index 45a3362fa..000000000 --- a/src/test/ui/never_type/diverging-fallback-control-flow.rs +++ /dev/null @@ -1,100 +0,0 @@ -// revisions: nofallback fallback -// run-pass - -#![allow(dead_code)] -#![allow(unused_assignments)] -#![allow(unused_variables)] -#![allow(unreachable_code)] -// Test various cases where we permit an unconstrained variable -// to fallback based on control-flow. In all of these cases, -// the type variable winds up being the target of both a `!` coercion -// and a coercion from a non-`!` variable, and hence falls back to `()`. -#![cfg_attr(fallback, feature(never_type, never_type_fallback))] - -trait UnitDefault { - fn default() -> Self; -} - -impl UnitDefault for u32 { - fn default() -> Self { - 0 - } -} - -impl UnitDefault for () { - fn default() -> () { - panic!() - } -} - -fn assignment() { - let x; - - if true { - x = UnitDefault::default(); - } else { - x = return; - } -} - -fn assignment_rev() { - let x; - - if true { - x = return; - } else { - x = UnitDefault::default(); - } -} - -fn if_then_else() { - let _x = if true { - UnitDefault::default() - } else { - return; - }; -} - -fn if_then_else_rev() { - let _x = if true { - return; - } else { - UnitDefault::default() - }; -} - -fn match_arm() { - let _x = match Ok(UnitDefault::default()) { - Ok(v) => v, - Err(()) => return, - }; -} - -fn match_arm_rev() { - let _x = match Ok(UnitDefault::default()) { - Err(()) => return, - Ok(v) => v, - }; -} - -fn loop_break() { - let _x = loop { - if false { - break return; - } else { - break UnitDefault::default(); - } - }; -} - -fn loop_break_rev() { - let _x = loop { - if false { - break return; - } else { - break UnitDefault::default(); - } - }; -} - -fn main() {} |