summaryrefslogtreecommitdiffstats
path: root/src/test/ui/consts/const_constructor
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/consts/const_constructor
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/consts/const_constructor')
-rw-r--r--src/test/ui/consts/const_constructor/const-construct-call.rs110
-rw-r--r--src/test/ui/consts/const_constructor/const_constructor_qpath.rs37
2 files changed, 0 insertions, 147 deletions
diff --git a/src/test/ui/consts/const_constructor/const-construct-call.rs b/src/test/ui/consts/const_constructor/const-construct-call.rs
deleted file mode 100644
index cb735d7b3..000000000
--- a/src/test/ui/consts/const_constructor/const-construct-call.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-// Test that constructors are considered to be const fns
-
-// run-pass
-
-// Ctor(..) is transformed to Ctor { 0: ... } in THIR lowering, so directly
-// calling constructors doesn't require them to be const.
-
-type ExternalType = std::panic::AssertUnwindSafe<(Option<i32>, Result<i32, bool>)>;
-
-const fn call_external_constructors_in_local_vars() -> ExternalType {
- let f = Some;
- let g = Err;
- let h = std::panic::AssertUnwindSafe;
- let x = f(5);
- let y = g(false);
- let z = h((x, y));
- z
-}
-
-const CALL_EXTERNAL_CONSTRUCTORS_IN_LOCAL_VARS: ExternalType = {
- let f = Some;
- let g = Err;
- let h = std::panic::AssertUnwindSafe;
- let x = f(5);
- let y = g(false);
- let z = h((x, y));
- z
-};
-
-const fn call_external_constructors_in_temps() -> ExternalType {
- let x = { Some }(5);
- let y = (*&Err)(false);
- let z = [std::panic::AssertUnwindSafe][0]((x, y));
- z
-}
-
-const CALL_EXTERNAL_CONSTRUCTORS_IN_TEMPS: ExternalType = {
- let x = { Some }(5);
- let y = (*&Err)(false);
- let z = [std::panic::AssertUnwindSafe][0]((x, y));
- z
-};
-
-#[derive(Debug, PartialEq)]
-enum LocalOption<T> {
- Some(T),
- _None,
-}
-
-#[derive(Debug, PartialEq)]
-enum LocalResult<T, E> {
- _Ok(T),
- Err(E),
-}
-
-#[derive(Debug, PartialEq)]
-struct LocalAssertUnwindSafe<T>(T);
-
-type LocalType = LocalAssertUnwindSafe<(LocalOption<i32>, LocalResult<i32, bool>)>;
-
-const fn call_local_constructors_in_local_vars() -> LocalType {
- let f = LocalOption::Some;
- let g = LocalResult::Err;
- let h = LocalAssertUnwindSafe;
- let x = f(5);
- let y = g(false);
- let z = h((x, y));
- z
-}
-
-const CALL_LOCAL_CONSTRUCTORS_IN_LOCAL_VARS: LocalType = {
- let f = LocalOption::Some;
- let g = LocalResult::Err;
- let h = LocalAssertUnwindSafe;
- let x = f(5);
- let y = g(false);
- let z = h((x, y));
- z
-};
-
-const fn call_local_constructors_in_temps() -> LocalType {
- let x = { LocalOption::Some }(5);
- let y = (*&LocalResult::Err)(false);
- let z = [LocalAssertUnwindSafe][0]((x, y));
- z
-}
-
-const CALL_LOCAL_CONSTRUCTORS_IN_TEMPS: LocalType = {
- let x = { LocalOption::Some }(5);
- let y = (*&LocalResult::Err)(false);
- let z = [LocalAssertUnwindSafe][0]((x, y));
- z
-};
-
-fn main() {
- assert_eq!(
- (
- call_external_constructors_in_local_vars().0,
- call_external_constructors_in_temps().0,
- call_local_constructors_in_local_vars(),
- call_local_constructors_in_temps(),
- ),
- (
- CALL_EXTERNAL_CONSTRUCTORS_IN_LOCAL_VARS.0,
- CALL_EXTERNAL_CONSTRUCTORS_IN_TEMPS.0,
- CALL_LOCAL_CONSTRUCTORS_IN_LOCAL_VARS,
- CALL_LOCAL_CONSTRUCTORS_IN_TEMPS,
- )
- );
-}
diff --git a/src/test/ui/consts/const_constructor/const_constructor_qpath.rs b/src/test/ui/consts/const_constructor/const_constructor_qpath.rs
deleted file mode 100644
index 7c55f470f..000000000
--- a/src/test/ui/consts/const_constructor/const_constructor_qpath.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-// run-pass
-
-trait ConstDefault {
- const DEFAULT: Self;
-}
-
-#[derive(PartialEq)]
-enum E {
- V(i32),
- W(usize),
-}
-
-impl ConstDefault for E {
- const DEFAULT: Self = Self::V(23);
-}
-
-impl ConstDefault for Option<i32> {
- const DEFAULT: Self = Self::Some(23);
-}
-
-impl E {
- const NON_DEFAULT: Self = Self::W(12);
- const fn local_fn() -> Self {
- Self::V(23)
- }
-}
-
-const fn explicit_qpath() -> E {
- let _x = <Option<usize>>::Some(23);
- <E>::W(12)
-}
-
-fn main() {
- assert!(E::DEFAULT == E::local_fn());
- assert!(Option::DEFAULT == Some(23));
- assert!(E::NON_DEFAULT == explicit_qpath());
-}