diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/variance/variance-regions-direct.rs | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-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/variance/variance-regions-direct.rs')
-rw-r--r-- | src/test/ui/variance/variance-regions-direct.rs | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/test/ui/variance/variance-regions-direct.rs b/src/test/ui/variance/variance-regions-direct.rs deleted file mode 100644 index 3f34e7655..000000000 --- a/src/test/ui/variance/variance-regions-direct.rs +++ /dev/null @@ -1,65 +0,0 @@ -// Test that we correctly infer variance for region parameters in -// various self-contained types. - -#![feature(rustc_attrs)] - -// Regions that just appear in normal spots are contravariant: - -#[rustc_variance] -struct Test2<'a, 'b, 'c> { //~ ERROR [-, -, -] - x: &'a isize, - y: &'b [isize], - c: &'c str -} - -// Those same annotations in function arguments become covariant: - -#[rustc_variance] -struct Test3<'a, 'b, 'c> { //~ ERROR [+, +, +] - x: extern "Rust" fn(&'a isize), - y: extern "Rust" fn(&'b [isize]), - c: extern "Rust" fn(&'c str), -} - -// Mutability induces invariance: - -#[rustc_variance] -struct Test4<'a, 'b:'a> { //~ ERROR [-, o] - x: &'a mut &'b isize, -} - -// Mutability induces invariance, even when in a -// contravariant context: - -#[rustc_variance] -struct Test5<'a, 'b:'a> { //~ ERROR [+, o] - x: extern "Rust" fn(&'a mut &'b isize), -} - -// Invariance is a trap from which NO ONE CAN ESCAPE. -// In other words, even though the `&'b isize` occurs in -// an argument list (which is contravariant), that -// argument list occurs in an invariant context. - -#[rustc_variance] -struct Test6<'a, 'b:'a> { //~ ERROR [-, o] - x: &'a mut extern "Rust" fn(&'b isize), -} - -// No uses at all is bivariant: - -#[rustc_variance] -struct Test7<'a> { //~ ERROR [*] - x: isize -} - -// Try enums too. - -#[rustc_variance] -enum Test8<'a, 'b, 'c:'b> { //~ ERROR [+, -, o] - Test8A(extern "Rust" fn(&'a isize)), - Test8B(&'b [isize]), - Test8C(&'b mut &'c str), -} - -fn main() {} |