@@ -3,32 +3,32 @@ import caps.*
3
3
4
4
def test [C ^ ] =
5
5
val a : C = ???
6
- val b : CapSet ^ {C ^ } = a
6
+ val b : CapSet ^ {C } = a
7
7
val c : C = b
8
- val d : CapSet ^ {C ^ , c} = a
8
+ val d : CapSet ^ {C , c} = a
9
9
10
10
// TODO: make "CapSet-ness" of type variables somehow contagious?
11
11
// Then we don't have to spell out the bounds explicitly...
12
12
def testTrans [C ^ , D >: CapSet <: C , E >: CapSet <: D , F >: C <: CapSet ^ ] =
13
13
val d1 : D = ???
14
- val d2 : CapSet ^ {D ^ } = d1
14
+ val d2 : CapSet ^ {D } = d1
15
15
val d3 : D = d2
16
16
val e1 : E = ???
17
- val e2 : CapSet ^ {E ^ } = e1
17
+ val e2 : CapSet ^ {E } = e1
18
18
val e3 : E = e2
19
19
val d4 : D = e1
20
20
val c1 : C = d1
21
21
val c2 : C = e1
22
22
val f1 : F = c1
23
- val d_e_f1 : CapSet ^ {D ^ , E ^ , F ^ } = d1
24
- val d_e_f2 : CapSet ^ {D ^ , E ^ , F ^ } = e1
25
- val d_e_f3 : CapSet ^ {D ^ , E ^ , F ^ } = f1
23
+ val d_e_f1 : CapSet ^ {D , E , F } = d1
24
+ val d_e_f2 : CapSet ^ {D , E , F } = e1
25
+ val d_e_f3 : CapSet ^ {D , E , F } = f1
26
26
val f2 : F = d_e_f1
27
27
val c3 : C = d_e_f1 // error
28
28
val c4 : C = f1 // error
29
29
val e4 : E = f1 // error
30
30
val e5 : E = d1 // error
31
- val c5 : CapSet ^ {C ^ } = e1
31
+ val c5 : CapSet ^ {C } = e1
32
32
33
33
34
34
trait A [+ T ]
@@ -37,12 +37,12 @@ trait B[-C]
37
37
38
38
def testCong [C ^ , D ^ ] =
39
39
val a : A [C ] = ???
40
- val b : A [CapSet ^ {C ^ }] = a
41
- val c : A [CapSet ^ {D ^ }] = a // error
42
- val d : A [CapSet ^ {C ^ , D ^ }] = a
40
+ val b : A [CapSet ^ {C }] = a
41
+ val c : A [CapSet ^ {D }] = a // error
42
+ val d : A [CapSet ^ {C , D }] = a
43
43
val e : A [C ] = d // error
44
44
val f : B [C ] = ???
45
- val g : B [CapSet ^ {C ^ }] = f
45
+ val g : B [CapSet ^ {C }] = f
46
46
val h : B [C ] = g
47
- val i : B [CapSet ^ {C ^ , D ^ }] = h // error
47
+ val i : B [CapSet ^ {C , D }] = h // error
48
48
val j : B [C ] = i
0 commit comments