Skip to content

Commit 921a930

Browse files
committed
Add testcases for use annotations and value classes
1 parent 4b0f18c commit 921a930

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import language.experimental.captureChecking
2+
import caps.*
3+
4+
class Runner(val x: Int) extends AnyVal:
5+
def runOps(@use ops: List[() => Unit]): Unit =
6+
ops.foreach(_()) // ok
7+
8+
class RunnerAlt(val x: Int):
9+
def runOps(@use ops: List[() => Unit]): Unit =
10+
ops.foreach(_()) // ok, of course
11+
12+
class RunnerAltAlt(val x: Int) extends AnyVal:
13+
def runOps(ops: List[() => Unit]): Unit =
14+
ops.foreach(_()) // error, as expected
15+
16+
class RunnerAltAltAlt(val x: Int):
17+
def runOps(ops: List[() => Unit]): Unit =
18+
ops.foreach(_()) // error, as expected
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import language.experimental.captureChecking
2+
trait IterableOnce[+T]
3+
trait Iterable[+T] extends IterableOnce[T]:
4+
def flatMap[U](@caps.use f: T => IterableOnce[U]^): Iterable[U]^{this, f*}
5+
6+
7+
class IterableOnceExtensionMethods[T](val it: IterableOnce[T]) extends AnyVal:
8+
def flatMap[U](@caps.use f: T => IterableOnce[U]^): IterableOnce[U]^{f*} = it match
9+
case it: Iterable[T] => it.flatMap(f)
10+

0 commit comments

Comments
 (0)