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/nll/user-annotations/issue-55748-pat-types-constrain-bindings.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/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs')
-rw-r--r-- | src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs b/src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs deleted file mode 100644 index c71937a50..000000000 --- a/src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs +++ /dev/null @@ -1,68 +0,0 @@ -// This test is ensuring that type ascriptions on let bindings -// constrain both: -// -// 1. the input expression on the right-hand side (after any potential -// coercion, and allowing for covariance), *and* -// -// 2. the bindings (if any) nested within the pattern on the left-hand -// side (and here, the type-constraint is *invariant*). - -#![allow(dead_code, unused_mut)] -type PairUncoupled<'a, 'b, T> = (&'a T, &'b T); -type PairCoupledRegions<'a, T> = (&'a T, &'a T); -type PairCoupledTypes<T> = (T, T); - -fn uncoupled_lhs<'a>(_x: &'a u32, s: &'static u32) -> &'static u32 { - let ((mut y, mut _z),): (PairUncoupled<u32>,) = ((s, &_x),); // ok - // Above compiling does *not* imply below would compile. - // ::std::mem::swap(&mut y, &mut _z); - y -} - -fn swap_regions((mut y, mut _z): PairCoupledRegions<u32>) { - ::std::mem::swap(&mut y, &mut _z); -} - -fn coupled_regions_lhs<'a>(_x: &'a u32, s: &'static u32) -> &'static u32 { - let ((y, _z),): (PairCoupledRegions<u32>,) = ((s, &_x),); - // If above line compiled, so should line below ... - - // swap_regions((y, _z)); - - // ... but the ascribed type also invalidates this use of `y` - y //~ ERROR lifetime may not live long enough -} - -fn swap_types((mut y, mut _z): PairCoupledTypes<&u32>) { - ::std::mem::swap(&mut y, &mut _z); -} - -fn coupled_types_lhs<'a>(_x: &'a u32, s: &'static u32) -> &'static u32 { - let ((y, _z),): (PairCoupledTypes<&u32>,) = ((s, &_x),); - // If above line compiled, so should line below ... - - // swap_types((y, _z)); - - // ... but the ascribed type also invalidates this use of `y` - y //~ ERROR lifetime may not live long enough -} - -fn swap_wilds((mut y, mut _z): PairCoupledTypes<&u32>) { - ::std::mem::swap(&mut y, &mut _z); -} - -fn coupled_wilds_lhs<'a>(_x: &'a u32, s: &'static u32) -> &'static u32 { - let ((y, _z),): (PairCoupledTypes<_>,) = ((s, &_x),); - // If above line compiled, so should line below - // swap_wilds((y, _z)); - - // ... but the ascribed type also invalidates this use of `y` - y //~ ERROR lifetime may not live long enough -} - -fn main() { - uncoupled_lhs(&3, &4); - coupled_regions_lhs(&3, &4); - coupled_types_lhs(&3, &4); - coupled_wilds_lhs(&3, &4); -} |