diff options
| author | Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> | 2023-01-05 09:13:28 +0100 |
|---|---|---|
| committer | Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> | 2023-01-11 09:32:08 +0000 |
| commit | cf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch) | |
| tree | 40a88d9a46aaf3e8870676eb2538378b75a263eb /src/test/ui/consts/const_constructor | |
| parent | ca855e6e42787ecd062d81d53336fe6788ef51a9 (diff) | |
| download | rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip | |
Move /src/test to /tests
Diffstat (limited to 'src/test/ui/consts/const_constructor')
| -rw-r--r-- | src/test/ui/consts/const_constructor/const-construct-call.rs | 110 | ||||
| -rw-r--r-- | src/test/ui/consts/const_constructor/const_constructor_qpath.rs | 37 |
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 cb735d7b305..00000000000 --- 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 7c55f470fdf..00000000000 --- 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()); -} |
