Skip to content

Commit 2b28cd6

Browse files
committed
add one test for type parameter healing
1 parent 0e7d33a commit 2b28cd6

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import language.experimental.captureChecking
2+
3+
trait Cap { def use(): Unit }
4+
5+
def localCap[T](op: (cap: {*} Cap) => T): T = ???
6+
7+
def main(io: {*} Cap, net: {*} Cap): Unit = {
8+
val test1 = localCap { cap => // error
9+
() => { cap.use() }
10+
}
11+
12+
val test2: (cap: {*} Cap) -> {cap} () -> Unit =
13+
localCap { cap => // should work
14+
(cap1: {*} Cap) => () => { cap1.use() }
15+
}
16+
17+
val test3: (cap: {io} Cap) -> {io} () -> Unit =
18+
localCap { cap => // should work
19+
(cap1: {io} Cap) => () => { cap1.use() }
20+
}
21+
22+
val test4: (cap: {io} Cap) -> {net} () -> Unit =
23+
localCap { cap => // error
24+
(cap1: {io} Cap) => () => { cap1.use() }
25+
}
26+
27+
def localCap2[T](op: (cap: {io} Cap) => T): T = ???
28+
29+
val test5: {io} () -> Unit =
30+
localCap2 { cap => // ok
31+
() => { cap.use() }
32+
}
33+
}

0 commit comments

Comments
 (0)