From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- .../actually_not_an_enum-discriminant.rs | 49 --------- .../arbitrary_enum_discriminant-no-repr.rs | 8 -- .../arbitrary_enum_discriminant-no-repr.stderr | 9 -- .../arbitrary_enum_discriminant.rs | 43 -------- src/test/ui/enum-discriminant/discriminant_size.rs | 54 ---------- .../ui/enum-discriminant/discriminant_size.stderr | 11 -- .../discriminant_value-wrapper.rs | 20 ---- .../ui/enum-discriminant/discriminant_value.rs | 82 --------------- .../forbidden-discriminant-kind-impl.rs | 14 --- .../forbidden-discriminant-kind-impl.stderr | 9 -- src/test/ui/enum-discriminant/get_discr.rs | 114 --------------------- src/test/ui/enum-discriminant/issue-104519.rs | 36 ------- src/test/ui/enum-discriminant/issue-43398.rs | 14 --- src/test/ui/enum-discriminant/issue-43398.stderr | 11 -- src/test/ui/enum-discriminant/issue-46519.rs | 30 ------ src/test/ui/enum-discriminant/issue-51582.rs | 18 ---- .../issue-70453-generics-in-discr-ice-2.rs | 16 --- .../issue-70453-generics-in-discr-ice-2.stderr | 11 -- .../issue-70453-generics-in-discr-ice.rs | 17 --- .../issue-70453-generics-in-discr-ice.stderr | 21 ---- .../issue-70453-polymorphic-ctfe.rs | 16 --- .../issue-70453-polymorphic-ctfe.stderr | 11 -- .../ui/enum-discriminant/issue-70509-partial_eq.rs | 18 ---- .../issue-70509-partial_eq.stderr | 11 -- src/test/ui/enum-discriminant/issue-90038.rs | 21 ---- src/test/ui/enum-discriminant/niche-prefer-zero.rs | 14 --- src/test/ui/enum-discriminant/niche.rs | 109 -------------------- src/test/ui/enum-discriminant/repr128.rs | 45 -------- src/test/ui/enum-discriminant/repr128.stderr | 11 -- 29 files changed, 843 deletions(-) delete mode 100644 src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs delete mode 100644 src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs delete mode 100644 src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr delete mode 100644 src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs delete mode 100644 src/test/ui/enum-discriminant/discriminant_size.rs delete mode 100644 src/test/ui/enum-discriminant/discriminant_size.stderr delete mode 100644 src/test/ui/enum-discriminant/discriminant_value-wrapper.rs delete mode 100644 src/test/ui/enum-discriminant/discriminant_value.rs delete mode 100644 src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs delete mode 100644 src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr delete mode 100644 src/test/ui/enum-discriminant/get_discr.rs delete mode 100644 src/test/ui/enum-discriminant/issue-104519.rs delete mode 100644 src/test/ui/enum-discriminant/issue-43398.rs delete mode 100644 src/test/ui/enum-discriminant/issue-43398.stderr delete mode 100644 src/test/ui/enum-discriminant/issue-46519.rs delete mode 100644 src/test/ui/enum-discriminant/issue-51582.rs delete mode 100644 src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs delete mode 100644 src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr delete mode 100644 src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs delete mode 100644 src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr delete mode 100644 src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs delete mode 100644 src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr delete mode 100644 src/test/ui/enum-discriminant/issue-70509-partial_eq.rs delete mode 100644 src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr delete mode 100644 src/test/ui/enum-discriminant/issue-90038.rs delete mode 100644 src/test/ui/enum-discriminant/niche-prefer-zero.rs delete mode 100644 src/test/ui/enum-discriminant/niche.rs delete mode 100644 src/test/ui/enum-discriminant/repr128.rs delete mode 100644 src/test/ui/enum-discriminant/repr128.stderr (limited to 'src/test/ui/enum-discriminant') diff --git a/src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs b/src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs deleted file mode 100644 index 6a566ab3a..000000000 --- a/src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs +++ /dev/null @@ -1,49 +0,0 @@ -// run-pass -#![feature(core_intrinsics)] - -use std::intrinsics::discriminant_value; - -struct Zst; - -struct Struct { - _a: u32, -} - -union Union { - _a: u32, -} - -fn check(v: u8) { - assert_eq!(v, 0); -} - -pub fn generic() -where - for<'a> T: Fn(&'a isize), -{ - let v: Vec = Vec::new(); - let _: u8 = discriminant_value(&v); -} - -fn main() { - // check that we use `u8` as the discriminant value - // for everything that is not an enum. - check(discriminant_value(&true)); - check(discriminant_value(&'a')); - check(discriminant_value(&7)); - check(discriminant_value(&7.0)); - check(discriminant_value(&Zst)); - check(discriminant_value(&Struct { _a: 7 })); - check(discriminant_value(&Union { _a: 7 })); - check(discriminant_value(&[7, 77])); - check(discriminant_value(&(7 as *const ()))); - check(discriminant_value(&(7 as *mut ()))); - check(discriminant_value(&&7)); - check(discriminant_value(&&mut 7)); - check(discriminant_value(&check)); - let fn_ptr: fn(u8) = check; - check(discriminant_value(&fn_ptr)); - let hrtb: for<'a> fn(&'a str) -> &'a str = |x| x; - check(discriminant_value(&hrtb)); - check(discriminant_value(&(7, 77, 777))); -} diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs b/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs deleted file mode 100644 index a6e5f70fd..000000000 --- a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs +++ /dev/null @@ -1,8 +0,0 @@ -#![crate_type="lib"] - -enum Enum { -//~^ ERROR `#[repr(inttype)]` must be specified - Unit = 1, - Tuple() = 2, - Struct{} = 3, -} diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr b/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr deleted file mode 100644 index 8cee74696..000000000 --- a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0732]: `#[repr(inttype)]` must be specified - --> $DIR/arbitrary_enum_discriminant-no-repr.rs:3:1 - | -LL | enum Enum { - | ^^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0732`. diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs b/src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs deleted file mode 100644 index 83e74a6e6..000000000 --- a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs +++ /dev/null @@ -1,43 +0,0 @@ -// run-pass -#![feature(test)] - -extern crate test; - -use test::black_box; - -#[allow(dead_code)] -#[repr(u8)] -enum Enum { - Unit = 3, - Tuple(u16) = 2, - Struct { - a: u8, - b: u16, - } = 1, -} - -impl Enum { - const unsafe fn tag(&self) -> u8 { - *(self as *const Self as *const u8) - } -} - -fn main() { - const UNIT: Enum = Enum::Unit; - const TUPLE: Enum = Enum::Tuple(5); - const STRUCT: Enum = Enum::Struct{a: 7, b: 11}; - - // Ensure discriminants are correct during runtime execution - assert_eq!(3, unsafe { black_box(UNIT).tag() }); - assert_eq!(2, unsafe { black_box(TUPLE).tag() }); - assert_eq!(1, unsafe { black_box(STRUCT).tag() }); - - // Ensure discriminants are correct during CTFE - const UNIT_TAG: u8 = unsafe { UNIT.tag() }; - const TUPLE_TAG: u8 = unsafe { TUPLE.tag() }; - const STRUCT_TAG: u8 = unsafe { STRUCT.tag() }; - - assert_eq!(3, UNIT_TAG); - assert_eq!(2, TUPLE_TAG); - assert_eq!(1, STRUCT_TAG); -} diff --git a/src/test/ui/enum-discriminant/discriminant_size.rs b/src/test/ui/enum-discriminant/discriminant_size.rs deleted file mode 100644 index b939a70df..000000000 --- a/src/test/ui/enum-discriminant/discriminant_size.rs +++ /dev/null @@ -1,54 +0,0 @@ -// run-pass -#![feature(core_intrinsics, repr128)] -//~^ WARN the feature `repr128` is incomplete - -use std::intrinsics::discriminant_value; - -enum E1 { - A, - B, -} - -#[repr(i8)] -enum E2 { - A = 7, - B = -2, -} - -#[repr(C)] -enum E3 { - A = 42, - B = 100, -} - -#[repr(i128)] -enum E4 { - A = 0x1223_3445_5667_7889, - B = -0x1223_3445_5667_7889, -} - -fn main() { - let mut target: [isize; 3] = [0, 0, 0]; - target[1] = discriminant_value(&E1::A); - assert_eq!(target, [0, 0, 0]); - target[1] = discriminant_value(&E1::B); - assert_eq!(target, [0, 1, 0]); - - let mut target: [i8; 3] = [0, 0, 0]; - target[1] = discriminant_value(&E2::A); - assert_eq!(target, [0, 7, 0]); - target[1] = discriminant_value(&E2::B); - assert_eq!(target, [0, -2, 0]); - - let mut target: [isize; 3] = [0, 0, 0]; - target[1] = discriminant_value(&E3::A); - assert_eq!(target, [0, 42, 0]); - target[1] = discriminant_value(&E3::B); - assert_eq!(target, [0, 100, 0]); - - let mut target: [i128; 3] = [0, 0, 0]; - target[1] = discriminant_value(&E4::A); - assert_eq!(target, [0, 0x1223_3445_5667_7889, 0]); - target[1] = discriminant_value(&E4::B); - assert_eq!(target, [0, -0x1223_3445_5667_7889, 0]); -} diff --git a/src/test/ui/enum-discriminant/discriminant_size.stderr b/src/test/ui/enum-discriminant/discriminant_size.stderr deleted file mode 100644 index 9b1505b5c..000000000 --- a/src/test/ui/enum-discriminant/discriminant_size.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `repr128` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/discriminant_size.rs:2:29 - | -LL | #![feature(core_intrinsics, repr128)] - | ^^^^^^^ - | - = note: see issue #56071 for more information - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/enum-discriminant/discriminant_value-wrapper.rs b/src/test/ui/enum-discriminant/discriminant_value-wrapper.rs deleted file mode 100644 index 8e162d5c4..000000000 --- a/src/test/ui/enum-discriminant/discriminant_value-wrapper.rs +++ /dev/null @@ -1,20 +0,0 @@ -// run-pass - -#![allow(enum_intrinsics_non_enums)] - -use std::mem; - -#[allow(unused_tuple_struct_fields)] -enum ADT { - First(u32, u32), - Second(u64) -} - -pub fn main() { - assert!(mem::discriminant(&ADT::First(0,0)) == mem::discriminant(&ADT::First(1,1))); - assert!(mem::discriminant(&ADT::Second(5)) == mem::discriminant(&ADT::Second(6))); - assert!(mem::discriminant(&ADT::First(2,2)) != mem::discriminant(&ADT::Second(2))); - - let _ = mem::discriminant(&10); - let _ = mem::discriminant(&"test"); -} diff --git a/src/test/ui/enum-discriminant/discriminant_value.rs b/src/test/ui/enum-discriminant/discriminant_value.rs deleted file mode 100644 index f3dfac298..000000000 --- a/src/test/ui/enum-discriminant/discriminant_value.rs +++ /dev/null @@ -1,82 +0,0 @@ -// run-pass -#![allow(stable_features)] -#![feature(core, core_intrinsics)] - -extern crate core; -use core::intrinsics::discriminant_value; - -enum CLike1 { - A, - B, - C, - D -} - -enum CLike2 { - A = 5, - B = 2, - C = 19, - D -} - -#[repr(i8)] -enum CLike3 { - A = 5, - B, - C = -1, - D -} - -#[allow(unused_tuple_struct_fields)] -enum ADT { - First(u32, u32), - Second(u64) -} - -enum NullablePointer { - Something(#[allow(unused_tuple_struct_fields)] &'static u32), - Nothing -} - -static CONST : u32 = 0xBEEF; - -#[allow(dead_code)] -#[repr(isize)] -enum Mixed { - Unit = 3, - Tuple(u16) = 2, - Struct { - a: u8, - b: u16, - } = 1, -} - -pub fn main() { - assert_eq!(discriminant_value(&CLike1::A), 0isize); - assert_eq!(discriminant_value(&CLike1::B), 1); - assert_eq!(discriminant_value(&CLike1::C), 2); - assert_eq!(discriminant_value(&CLike1::D), 3); - - assert_eq!(discriminant_value(&CLike2::A), 5isize); - assert_eq!(discriminant_value(&CLike2::B), 2); - assert_eq!(discriminant_value(&CLike2::C), 19); - assert_eq!(discriminant_value(&CLike2::D), 20); - - assert_eq!(discriminant_value(&CLike3::A), 5i8); - assert_eq!(discriminant_value(&CLike3::B), 6); - assert_eq!(discriminant_value(&CLike3::C), -1); - assert_eq!(discriminant_value(&CLike3::D), 0); - - assert_eq!(discriminant_value(&ADT::First(0,0)), 0isize); - assert_eq!(discriminant_value(&ADT::Second(5)), 1); - - assert_eq!(discriminant_value(&NullablePointer::Nothing), 1isize); - assert_eq!(discriminant_value(&NullablePointer::Something(&CONST)), 0); - - assert_eq!(discriminant_value(&10), 0u8); - assert_eq!(discriminant_value(&"test"), 0u8); - - assert_eq!(discriminant_value(&Mixed::Unit), 3isize); - assert_eq!(discriminant_value(&Mixed::Tuple(5)), 2); - assert_eq!(discriminant_value(&Mixed::Struct{a: 7, b: 11}), 1); -} diff --git a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs b/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs deleted file mode 100644 index 4760ca548..000000000 --- a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs +++ /dev/null @@ -1,14 +0,0 @@ -#![feature(discriminant_kind)] - -use std::marker::DiscriminantKind; - -enum Uninhabited {} - -struct NewType; - -impl DiscriminantKind for NewType { - //~^ ERROR explicit impls for the `DiscriminantKind` trait are not permitted - type Discriminant = Uninhabited; -} - -fn main() {} diff --git a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr b/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr deleted file mode 100644 index 38cfd13b9..000000000 --- a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0322]: explicit impls for the `DiscriminantKind` trait are not permitted - --> $DIR/forbidden-discriminant-kind-impl.rs:9:1 - | -LL | impl DiscriminantKind for NewType { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl of `DiscriminantKind` not allowed - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0322`. diff --git a/src/test/ui/enum-discriminant/get_discr.rs b/src/test/ui/enum-discriminant/get_discr.rs deleted file mode 100644 index 71eea4e0f..000000000 --- a/src/test/ui/enum-discriminant/get_discr.rs +++ /dev/null @@ -1,114 +0,0 @@ -// run-pass - -// Now that there are several variations on the code generated in -// `codegen_get_discr`, let's make sure the various cases yield the correct -// result. - -// To get the discriminant of an E value, there are no shortcuts - we must -// do the full algorithm. -#[repr(u8)] -pub enum X1 { - _1 = 1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, - _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, - _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, - _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, - _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, - _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, - _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, - _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, - _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, - _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, - _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, - _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, - _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, - _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, - _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, - _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, -} - -#[repr(i8)] -pub enum X2 { - _1 = -1, _2 = 0, _3 = 1, -} - -#[repr(i8)] -pub enum X3 { - _1 = -128, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, - _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, - _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, - _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, - _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, - _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, - _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, - _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, - _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, - _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, - _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, - _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, - _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, - _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, - _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, - _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, -} - -#[repr(i8)] -pub enum X4 { - _1 = -126, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, - _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, - _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, - _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, - _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, - _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, - _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, - _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, - _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, - _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, - _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, - _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, - _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, - _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, - _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, - _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, -} - -pub enum E { - A(X), - B, - C, -} - -pub fn match_e(e: E) -> u8 { - use E::*; - match e { - A(_) => 0, - B => 1, - C => 2, - } -} - -fn main() { - assert_eq!(match_e(E::A(X1::_1)), 0); - assert_eq!(match_e(E::A(X1::_2)), 0); - assert_eq!(match_e(E::A(X1::_254)), 0); - assert_eq!(match_e(E::::B), 1); - assert_eq!(match_e(E::::C), 2); - assert_eq!(match_e(E::A(X2::_1)), 0); - assert_eq!(match_e(E::A(X2::_2)), 0); - assert_eq!(match_e(E::A(X2::_3)), 0); - assert_eq!(match_e(E::::B), 1); - assert_eq!(match_e(E::::C), 2); - assert_eq!(match_e(E::A(X3::_1)), 0); - assert_eq!(match_e(E::A(X3::_2)), 0); - assert_eq!(match_e(E::A(X3::_254)), 0); - assert_eq!(match_e(E::::B), 1); - assert_eq!(match_e(E::::C), 2); - assert_eq!(match_e(E::A(X4::_1)), 0); - assert_eq!(match_e(E::A(X4::_2)), 0); - assert_eq!(match_e(E::A(X4::_254)), 0); - assert_eq!(match_e(E::::B), 1); - assert_eq!(match_e(E::::C), 2); - assert_eq!(match_e(E::A(false)), 0); - assert_eq!(match_e(E::A(true)), 0); - assert_eq!(match_e(E::::B), 1); - assert_eq!(match_e(E::::C), 2); -} diff --git a/src/test/ui/enum-discriminant/issue-104519.rs b/src/test/ui/enum-discriminant/issue-104519.rs deleted file mode 100644 index c4630f76b..000000000 --- a/src/test/ui/enum-discriminant/issue-104519.rs +++ /dev/null @@ -1,36 +0,0 @@ -// run-pass -#![allow(dead_code)] - -enum OpenResult { - Ok(()), - Err(()), - TransportErr(TransportErr), -} - -#[repr(i32)] -enum TransportErr { - UnknownMethod = -2, -} - -#[inline(never)] -fn some_match(result: OpenResult) -> u8 { - match result { - OpenResult::Ok(()) => 0, - _ => 1, - } -} - -fn main() { - let result = OpenResult::Ok(()); - assert_eq!(some_match(result), 0); - - let result = OpenResult::Ok(()); - match result { - OpenResult::Ok(()) => (), - _ => unreachable!("message a"), - } - match result { - OpenResult::Ok(()) => (), - _ => unreachable!("message b"), - } -} diff --git a/src/test/ui/enum-discriminant/issue-43398.rs b/src/test/ui/enum-discriminant/issue-43398.rs deleted file mode 100644 index 581db033f..000000000 --- a/src/test/ui/enum-discriminant/issue-43398.rs +++ /dev/null @@ -1,14 +0,0 @@ -// run-pass - -#![feature(core_intrinsics)] -#![feature(repr128)] -//~^ WARN the feature `repr128` is incomplete - -#[repr(i128)] -enum Big { A, B } - -fn main() { - println!("{} {:?}", - std::intrinsics::discriminant_value(&Big::A), - std::mem::discriminant(&Big::B)); -} diff --git a/src/test/ui/enum-discriminant/issue-43398.stderr b/src/test/ui/enum-discriminant/issue-43398.stderr deleted file mode 100644 index fc7bbd062..000000000 --- a/src/test/ui/enum-discriminant/issue-43398.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `repr128` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-43398.rs:4:12 - | -LL | #![feature(repr128)] - | ^^^^^^^ - | - = note: see issue #56071 for more information - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/enum-discriminant/issue-46519.rs b/src/test/ui/enum-discriminant/issue-46519.rs deleted file mode 100644 index 0567923b7..000000000 --- a/src/test/ui/enum-discriminant/issue-46519.rs +++ /dev/null @@ -1,30 +0,0 @@ -// run-pass -// compile-flags:--test -O - -// needs-unwind - -#[test] -#[should_panic(expected = "creating inhabited type")] -fn test() { - FontLanguageOverride::system_font(SystemFont::new()); -} - -pub enum FontLanguageOverride { - Normal, - Override(&'static str), - System(SystemFont) -} - -pub enum SystemFont {} - -impl FontLanguageOverride { - fn system_font(f: SystemFont) -> Self { - FontLanguageOverride::System(f) - } -} - -impl SystemFont { - fn new() -> Self { - panic!("creating inhabited type") - } -} diff --git a/src/test/ui/enum-discriminant/issue-51582.rs b/src/test/ui/enum-discriminant/issue-51582.rs deleted file mode 100644 index 40a70c623..000000000 --- a/src/test/ui/enum-discriminant/issue-51582.rs +++ /dev/null @@ -1,18 +0,0 @@ -// run-pass -#![feature(core_intrinsics)] - -#[repr(i8)] -pub enum Enum { - VariantA, - VariantB, -} - -fn make_b() -> Enum { Enum::VariantB } - -fn main() { - assert_eq!(1, make_b() as i8); - assert_eq!(1, make_b() as u8); - assert_eq!(1, make_b() as i32); - assert_eq!(1, make_b() as u32); - assert_eq!(1, std::intrinsics::discriminant_value(&make_b())); -} diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs b/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs deleted file mode 100644 index ad9fcc25b..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(core_intrinsics)] - -extern crate core; -use core::intrinsics::discriminant_value; - -#[repr(usize)] -enum MyWeirdOption { - None = 0, - Some(T) = std::mem::size_of::(), - //~^ ERROR generic parameters may not be used in const operations -} - -fn main() { - assert_eq!(discriminant_value(&MyWeirdOption::::None), 0); - assert_eq!(discriminant_value(&MyWeirdOption::Some(0u8)), 1); -} diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr b/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr deleted file mode 100644 index e4e10468d..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: generic parameters may not be used in const operations - --> $DIR/issue-70453-generics-in-discr-ice-2.rs:9:35 - | -LL | Some(T) = std::mem::size_of::(), - | ^ cannot perform const operation using `T` - | - = note: type parameters may not be used in const expressions - = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions - -error: aborting due to previous error - diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs b/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs deleted file mode 100644 index a0fb788a5..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(core_intrinsics)] - -extern crate core; -use core::intrinsics::discriminant_value; - -#[repr(usize)] -enum MyWeirdOption { -//~^ ERROR parameter `T` is never used - None = 0, - Some = std::mem::size_of::(), - //~^ ERROR generic parameters may not be used in const operations -} - -fn main() { - assert_eq!(discriminant_value(&MyWeirdOption::::None), 0); - assert_eq!(discriminant_value(&MyWeirdOption::::Some), 1); -} diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr b/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr deleted file mode 100644 index 7ea8a3912..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error: generic parameters may not be used in const operations - --> $DIR/issue-70453-generics-in-discr-ice.rs:10:32 - | -LL | Some = std::mem::size_of::(), - | ^ cannot perform const operation using `T` - | - = note: type parameters may not be used in const expressions - = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions - -error[E0392]: parameter `T` is never used - --> $DIR/issue-70453-generics-in-discr-ice.rs:7:20 - | -LL | enum MyWeirdOption { - | ^ unused parameter - | - = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` - = help: if you intended `T` to be a const parameter, use `const T: usize` instead - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs b/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs deleted file mode 100644 index 42a062239..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(core_intrinsics)] - -extern crate core; -use core::intrinsics::discriminant_value; - -#[repr(usize)] -enum MyWeirdOption { - None = 0, - Some(T) = core::mem::size_of::<*mut T>(), - //~^ ERROR generic parameters may not be used -} - -fn main() { - assert_eq!(discriminant_value(&MyWeirdOption::<()>::None), 0); - assert_eq!(discriminant_value(&MyWeirdOption::Some(())), core::mem::size_of::()); -} diff --git a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr b/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr deleted file mode 100644 index 0a7a63160..000000000 --- a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: generic parameters may not be used in const operations - --> $DIR/issue-70453-polymorphic-ctfe.rs:9:41 - | -LL | Some(T) = core::mem::size_of::<*mut T>(), - | ^ cannot perform const operation using `T` - | - = note: type parameters may not be used in const expressions - = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions - -error: aborting due to previous error - diff --git a/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs b/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs deleted file mode 100644 index 3adac7b72..000000000 --- a/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs +++ /dev/null @@ -1,18 +0,0 @@ -// run-pass -#![feature(repr128)] -//~^ WARN the feature `repr128` is incomplete - -#[derive(PartialEq, Debug)] -#[repr(i128)] -enum Test { - A(Box) = 0, - B(usize) = u64::MAX as i128 + 1, -} - -fn main() { - assert_ne!(Test::A(Box::new(2)), Test::B(0)); - // This previously caused a segfault. - // - // See https://github.com/rust-lang/rust/issues/70509#issuecomment-620654186 - // for a detailed explanation. -} diff --git a/src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr b/src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr deleted file mode 100644 index 2eef930c3..000000000 --- a/src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `repr128` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-70509-partial_eq.rs:2:12 - | -LL | #![feature(repr128)] - | ^^^^^^^ - | - = note: see issue #56071 for more information - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/enum-discriminant/issue-90038.rs b/src/test/ui/enum-discriminant/issue-90038.rs deleted file mode 100644 index 5e98eccd9..000000000 --- a/src/test/ui/enum-discriminant/issue-90038.rs +++ /dev/null @@ -1,21 +0,0 @@ -// run-pass - -#[repr(u32)] -pub enum Foo { - // Greater than or equal to 2 - A = 2, -} - -pub enum Bar { - A(Foo), - // More than two const variants - B, - C, -} - -fn main() { - match Bar::A(Foo::A) { - Bar::A(_) => (), - _ => unreachable!(), - } -} diff --git a/src/test/ui/enum-discriminant/niche-prefer-zero.rs b/src/test/ui/enum-discriminant/niche-prefer-zero.rs deleted file mode 100644 index f20607a89..000000000 --- a/src/test/ui/enum-discriminant/niche-prefer-zero.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Check that niche selection prefers zero. -// See https://github.com/rust-lang/rust/pull/87794 -// run-pass -#[repr(u8)] -pub enum Size { - One = 1, - Two = 2, - Three = 3, -} - -fn main() { - // check that `None` is zero - assert_eq!(0, unsafe { std::mem::transmute::, u8>(None) }); -} diff --git a/src/test/ui/enum-discriminant/niche.rs b/src/test/ui/enum-discriminant/niche.rs deleted file mode 100644 index 8d3061050..000000000 --- a/src/test/ui/enum-discriminant/niche.rs +++ /dev/null @@ -1,109 +0,0 @@ -// run-pass - -//! Make sure that we read and write enum discriminants correctly for corner cases caused -//! by layout optimizations. - -const OVERFLOW: usize = { - // Tests for https://github.com/rust-lang/rust/issues/62138. - #[repr(u8)] - #[allow(dead_code)] - enum WithWraparoundInvalidValues { - X = 1, - Y = 254, - } - - #[allow(dead_code)] - enum Foo { - A, - B, - C(WithWraparoundInvalidValues), - } - - let x = Foo::B; - match x { - Foo::B => 0, - _ => panic!(), - } -}; - -const MORE_OVERFLOW: usize = { - pub enum Infallible {} - - // The check that the `bool` field of `V1` is encoding a "niche variant" - // (i.e. not `V1`, so `V3` or `V4`) used to be mathematically incorrect, - // causing valid `V1` values to be interpreted as other variants. - #[allow(dead_code)] - pub enum E1 { - V1 { f: bool }, - V2 { f: Infallible }, - V3, - V4, - } - - // Computing the discriminant used to be done using the niche type (here `u8`, - // from the `bool` field of `V1`), overflowing for variants with large enough - // indices (`V3` and `V4`), causing them to be interpreted as other variants. - #[allow(dead_code)] - pub enum E2 { - V1 { f: bool }, - - /*_00*/ _01(X), _02(X), _03(X), _04(X), _05(X), _06(X), _07(X), - _08(X), _09(X), _0A(X), _0B(X), _0C(X), _0D(X), _0E(X), _0F(X), - _10(X), _11(X), _12(X), _13(X), _14(X), _15(X), _16(X), _17(X), - _18(X), _19(X), _1A(X), _1B(X), _1C(X), _1D(X), _1E(X), _1F(X), - _20(X), _21(X), _22(X), _23(X), _24(X), _25(X), _26(X), _27(X), - _28(X), _29(X), _2A(X), _2B(X), _2C(X), _2D(X), _2E(X), _2F(X), - _30(X), _31(X), _32(X), _33(X), _34(X), _35(X), _36(X), _37(X), - _38(X), _39(X), _3A(X), _3B(X), _3C(X), _3D(X), _3E(X), _3F(X), - _40(X), _41(X), _42(X), _43(X), _44(X), _45(X), _46(X), _47(X), - _48(X), _49(X), _4A(X), _4B(X), _4C(X), _4D(X), _4E(X), _4F(X), - _50(X), _51(X), _52(X), _53(X), _54(X), _55(X), _56(X), _57(X), - _58(X), _59(X), _5A(X), _5B(X), _5C(X), _5D(X), _5E(X), _5F(X), - _60(X), _61(X), _62(X), _63(X), _64(X), _65(X), _66(X), _67(X), - _68(X), _69(X), _6A(X), _6B(X), _6C(X), _6D(X), _6E(X), _6F(X), - _70(X), _71(X), _72(X), _73(X), _74(X), _75(X), _76(X), _77(X), - _78(X), _79(X), _7A(X), _7B(X), _7C(X), _7D(X), _7E(X), _7F(X), - _80(X), _81(X), _82(X), _83(X), _84(X), _85(X), _86(X), _87(X), - _88(X), _89(X), _8A(X), _8B(X), _8C(X), _8D(X), _8E(X), _8F(X), - _90(X), _91(X), _92(X), _93(X), _94(X), _95(X), _96(X), _97(X), - _98(X), _99(X), _9A(X), _9B(X), _9C(X), _9D(X), _9E(X), _9F(X), - _A0(X), _A1(X), _A2(X), _A3(X), _A4(X), _A5(X), _A6(X), _A7(X), - _A8(X), _A9(X), _AA(X), _AB(X), _AC(X), _AD(X), _AE(X), _AF(X), - _B0(X), _B1(X), _B2(X), _B3(X), _B4(X), _B5(X), _B6(X), _B7(X), - _B8(X), _B9(X), _BA(X), _BB(X), _BC(X), _BD(X), _BE(X), _BF(X), - _C0(X), _C1(X), _C2(X), _C3(X), _C4(X), _C5(X), _C6(X), _C7(X), - _C8(X), _C9(X), _CA(X), _CB(X), _CC(X), _CD(X), _CE(X), _CF(X), - _D0(X), _D1(X), _D2(X), _D3(X), _D4(X), _D5(X), _D6(X), _D7(X), - _D8(X), _D9(X), _DA(X), _DB(X), _DC(X), _DD(X), _DE(X), _DF(X), - _E0(X), _E1(X), _E2(X), _E3(X), _E4(X), _E5(X), _E6(X), _E7(X), - _E8(X), _E9(X), _EA(X), _EB(X), _EC(X), _ED(X), _EE(X), _EF(X), - _F0(X), _F1(X), _F2(X), _F3(X), _F4(X), _F5(X), _F6(X), _F7(X), - _F8(X), _F9(X), _FA(X), _FB(X), _FC(X), _FD(X), _FE(X), _FF(X), - - V3, - V4, - } - - if let E1::V2 { .. } = (E1::V1 { f: true }) { - unreachable!() - } - if let E1::V1 { .. } = (E1::V1 { f: true }) { - } else { - unreachable!() - } - - if let E2::V1 { .. } = E2::V3:: { - unreachable!() - } - if let E2::V3 { .. } = E2::V3:: { - } else { - unreachable!() - } - - 0 -}; - -fn main() { - assert_eq!(OVERFLOW, 0); - assert_eq!(MORE_OVERFLOW, 0); -} diff --git a/src/test/ui/enum-discriminant/repr128.rs b/src/test/ui/enum-discriminant/repr128.rs deleted file mode 100644 index 00021a07b..000000000 --- a/src/test/ui/enum-discriminant/repr128.rs +++ /dev/null @@ -1,45 +0,0 @@ -// run-pass -#![feature(repr128, core_intrinsics, discriminant_kind)] -//~^ WARN the feature `repr128` is incomplete - -use std::intrinsics::discriminant_value; -use std::marker::DiscriminantKind; - -#[repr(i128)] -enum Signed { - Zero = 0, - Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f, - U64Limit = u64::MAX as i128 + 1, - SmallNegative = -1, - BigNegative = i128::MIN, - Next, -} - -#[repr(u128)] -enum Unsigned { - Zero = 0, - Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f, - U64Limit = u64::MAX as u128 + 1, - Next, -} - -fn discr(v: T, value: U) -where - ::Discriminant: PartialEq, -{ - assert!(discriminant_value(&v) == value); -} - -fn main() { - discr(Signed::Zero, 0); - discr(Signed::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f); - discr(Signed::U64Limit, u64::MAX as i128 + 1); - discr(Signed::SmallNegative, -1); - discr(Signed::BigNegative, i128::MIN); - discr(Signed::Next, i128::MIN + 1); - - discr(Unsigned::Zero, 0); - discr(Unsigned::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f); - discr(Unsigned::U64Limit, u64::MAX as u128 + 1); - discr(Unsigned::Next, u64::MAX as u128 + 2); -} diff --git a/src/test/ui/enum-discriminant/repr128.stderr b/src/test/ui/enum-discriminant/repr128.stderr deleted file mode 100644 index da8d75c11..000000000 --- a/src/test/ui/enum-discriminant/repr128.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `repr128` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/repr128.rs:2:12 - | -LL | #![feature(repr128, core_intrinsics, discriminant_kind)] - | ^^^^^^^ - | - = note: see issue #56071 for more information - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - -- cgit v1.2.3