@@ -3,32 +3,32 @@ import caps.*
33
44def test [C ^ ] =
55 val a : C = ???
6- val b : CapSet ^ {C ^ } = a
6+ val b : CapSet ^ {C } = a
77 val c : C = b
8- val d : CapSet ^ {C ^ , c} = a
8+ val d : CapSet ^ {C , c} = a
99
1010// TODO: make "CapSet-ness" of type variables somehow contagious?
1111// Then we don't have to spell out the bounds explicitly...
1212def testTrans [C ^ , D >: CapSet <: C , E >: CapSet <: D , F >: C <: CapSet ^ ] =
1313 val d1 : D = ???
14- val d2 : CapSet ^ {D ^ } = d1
14+ val d2 : CapSet ^ {D } = d1
1515 val d3 : D = d2
1616 val e1 : E = ???
17- val e2 : CapSet ^ {E ^ } = e1
17+ val e2 : CapSet ^ {E } = e1
1818 val e3 : E = e2
1919 val d4 : D = e1
2020 val c1 : C = d1
2121 val c2 : C = e1
2222 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
2626 val f2 : F = d_e_f1
2727 val c3 : C = d_e_f1 // error
2828 val c4 : C = f1 // error
2929 val e4 : E = f1 // error
3030 val e5 : E = d1 // error
31- val c5 : CapSet ^ {C ^ } = e1
31+ val c5 : CapSet ^ {C } = e1
3232
3333
3434trait A [+ T ]
@@ -37,12 +37,12 @@ trait B[-C]
3737
3838def testCong [C ^ , D ^ ] =
3939 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
4343 val e : A [C ] = d // error
4444 val f : B [C ] = ???
45- val g : B [CapSet ^ {C ^ }] = f
45+ val g : B [CapSet ^ {C }] = f
4646 val h : B [C ] = g
47- val i : B [CapSet ^ {C ^ , D ^ }] = h // error
47+ val i : B [CapSet ^ {C , D }] = h // error
4848 val j : B [C ] = i
0 commit comments