diff options
Diffstat (limited to 'tests/ui/regions/regions-variance-invariant-use-covariant.rs')
-rw-r--r-- | tests/ui/regions/regions-variance-invariant-use-covariant.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/ui/regions/regions-variance-invariant-use-covariant.rs b/tests/ui/regions/regions-variance-invariant-use-covariant.rs new file mode 100644 index 000000000..ab6a82ee7 --- /dev/null +++ b/tests/ui/regions/regions-variance-invariant-use-covariant.rs @@ -0,0 +1,21 @@ +// Test that a type which is invariant with respect to its region +// parameter used in a covariant way yields an error. +// +// Note: see variance-regions-*.rs for the tests that check that the +// variance inference works in the first place. + +struct Invariant<'a> { + f: &'a mut &'a isize +} + +fn use_<'b>(c: Invariant<'b>) { + + // For this assignment to be legal, Invariant<'b> <: Invariant<'static>. + // Since 'b <= 'static, this would be true if Invariant were covariant + // with respect to its parameter 'a. + + let _: Invariant<'static> = c; + //~^ ERROR lifetime may not live long enough +} + +fn main() { } |