summaryrefslogtreecommitdiff
path: root/test/pending/pos/t2071.scala
blob: a384cdfd3b99a827e277efef222f7dfdf25566f7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * We still have to evaluate whether we will permit existentials
 * with cross type dependencies. My current reaction would be no.
 * Ticket stays open until a decision is made.
 */
trait Iterable[+S]
trait Box[U]

trait A {
 type T <: Iterable[S] forSome { type S <: Box[U]; type U }
}

trait B extends A {
 type T <: Iterable[S] forSome { type S <: Box[U]; type U }
}
/*
But according to SLS, 3.5.1 Type Equivalence: Two existential types (§3.2.10) are equivalent if they have the same number of quantifiers, and, after renaming one list of type quantifiers by another, the quantified types as well as lower and upper bounds of corresponding quantifiers are equivalent.

So, every existential type must be equivalent to (and conform to) itself.
Attachments
*/