Skip to content

Commit fe31d81

Browse files
authored
Merge pull request #12859 from dotty-staging/add-io-test
Add IO test
2 parents 3a2190a + d1fab19 commit fe31d81

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
sealed trait IO:
2+
def puts(msg: Any): Unit = println(msg)
3+
4+
def test1 =
5+
val IO : IO retains * = new IO {}
6+
def foo = IO.puts("hello")
7+
val x : () => Unit = () => foo // error: Found: (() => Unit) retains IO; Required: () => Unit
8+
9+
def test2 =
10+
val IO : IO retains * = new IO {}
11+
def puts(msg: Any, io: IO retains *) = println(msg)
12+
def foo() = puts("hello", IO)
13+
val x : () => Unit = () => foo() // error: Found: (() => Unit) retains IO; Required: () => Unit
14+
15+
type Capability[T] = T retains *
16+
17+
def test3 =
18+
val IO : Capability[IO] = new IO {}
19+
def puts(msg: Any, io: Capability[IO]) = println(msg)
20+
def foo() = puts("hello", IO)
21+
val x : () => Unit = () => foo() // error: Found: (() => Unit) retains IO; Required: () => Unit

0 commit comments

Comments
 (0)