@@ -4,6 +4,14 @@ trait Foo[F[_]]
44trait Qux [F [_, _]]
55trait Baz [F [_], A , B ]
66
7+ trait FooPlus [+ F [+ _]]
8+ trait QuxPlus [+ F [+ _, + _]]
9+ trait BazPlus [+ F [+ _], + A , + B ]
10+
11+ trait FooMinus [- F [- _]]
12+ trait QuxMinus [- F [- _, - _]]
13+ trait BazMinus [- F [- _], - A , - B ]
14+
715class Bar1 extends Foo [Either [Int , * ]]
816class Bar2 extends Foo [Either [* , Int ]]
917class Bar3 extends Foo [* => Int ]
@@ -13,3 +21,23 @@ class Bar6 extends Foo[λ[x => Either[Int, x]]]
1321class Bar7 extends Qux [λ[(x, y) => Either [y, x]]]
1422class Bar8 extends Foo [Baz [Int => * , * , Int ]]
1523class Bar9 extends Foo [λ[x => Baz [x => * , Int , x]]]
24+
25+ class BarPlus1 extends FooPlus [Either [Int , +* ]]
26+ class BarPlus2 extends FooPlus [Either [+* , Int ]]
27+ class BarPlus3 extends FooPlus [Int => +* ]
28+ class BarPlus4 extends FooPlus [(Int , +* , Int )]
29+ class BarPlus5 extends FooPlus [λ[`+x` => Either [Int , x]]]
30+ class BarPlus6 extends QuxPlus [λ[(`+x`, `+y`) => Either [y, x]]]
31+ class BarPlus7 extends FooPlus [BazPlus [Int => +* , +* , Int ]]
32+
33+ class BarMinus1 extends FooMinus [-* => Int ]
34+
35+ class VarianceAnnotationIsActuallyIgnored1 extends FooPlus [Either [Int , -* ]]
36+ class VarianceAnnotationIsActuallyIgnored2 extends FooPlus [Either [-* , Int ]]
37+ class VarianceAnnotationIsActuallyIgnored3 extends FooMinus [+* => Int ]
38+ class VarianceAnnotationIsActuallyIgnored4 extends FooPlus [Int => -* ]
39+ class VarianceAnnotationIsActuallyIgnored5 extends FooPlus [(Int , -* , Int )]
40+ class VarianceAnnotationIsActuallyIgnored6 extends FooPlus [λ[`-x` => Either [Int , x]]]
41+ class VarianceAnnotationIsActuallyIgnored7 extends QuxPlus [λ[(`-x`, `-y`) => Either [y, x]]]
42+ class VarianceAnnotationIsActuallyIgnored8 extends FooPlus [BazPlus [Int => -* , -* , Int ]]
43+ class VarianceAnnotationIsActuallyIgnored9 extends Foo [λ[`-x` => BazPlus [x => -* , Int , x]]]
0 commit comments