Skip to content

Commit 16d3eb5

Browse files
committed
Add eval-value-class test with TODO fix
1 parent 0850ae1 commit 16d3eb5

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

tests/debug/eval-value-class.check

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
break Test$ 24
2+
eval b1
3+
result foo
4+
eval size.value
5+
result 2
6+
eval b2.take(size)
7+
result ba
8+
eval m(bar)
9+
result B(bar)
10+
eval new B("fizz")
11+
result fizz
12+
eval b1 + new B("buzz")
13+
result foobuzz
14+
eval new Msg(new Size(3))
15+
result Hel
16+
17+
break B$ 6
18+
eval x
19+
result foo
20+
eval take(size)
21+
result fo
22+
23+
break Test$ 25
24+
eval b1 = new B("fizz")
25+
result ()
26+
eval size = new Size(3)
27+
result ()
28+
29+
break Test$ 29
30+
eval a
31+
result B(fizzbar)
32+
eval a.take(this.size)
33+
result B(fiz)
34+
// TODO fix eval a.asInstanceOf[B] + B("buzz")
35+
// TODO fix result fizzbarbuzz
36+
37+
break B$ 6

tests/debug/eval-value-class.scala

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
trait A extends Any:
2+
def take(size: Size): A
3+
4+
class B(val x: String) extends AnyVal with A:
5+
def take(size: Size): B =
6+
new B(x.take(size.value))
7+
8+
def +(b: B): B =
9+
new B(x + b.x)
10+
11+
override def toString: String = s"B($x)"
12+
13+
class Size(val value: Int)
14+
15+
class Msg(size: Size):
16+
override def toString = "Hello, World!".take(size.value)
17+
18+
object Test:
19+
var b1 = new B("foo")
20+
private var size = new Size(2)
21+
22+
def main(args: Array[String]): Unit =
23+
val b2 = bar
24+
println(b1.take(size))
25+
println(m(b1 + b2))
26+
27+
def m(a: A): A =
28+
val size = new Size(5)
29+
a.take(size)
30+
31+
def bar: B = new B("bar")

0 commit comments

Comments
 (0)