Skip to content

Commit f87d905

Browse files
ringaboutirdassis
authored andcommitted
close nim-lang#11637(add testcase for nim-lang#11637) (nim-lang#15879)
* close nim-lang#11637(add testcase for nim-lang#11637) * Update tests/vm/t11637.nim
1 parent ff31810 commit f87d905

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/vm/t11637.nim

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
type Foo = ref object
2+
val: int
3+
4+
proc `+`(a, b: Foo): Foo =
5+
Foo(val: a.val + b.val)
6+
7+
proc `*`(a: Foo, b: int): Foo =
8+
Foo(val: a.val * b)
9+
10+
proc `+=`(a: var Foo, b: Foo) =
11+
a = Foo(
12+
val: a.val + b.val
13+
)
14+
15+
proc foobar(a, b, c: Foo): tuple[bar, baz, buzz: Foo] =
16+
17+
let foo = a + b + c
18+
result.bar = foo * 2
19+
20+
result.baz = foo * 3
21+
result.buzz = result.baz
22+
23+
result.buzz += a * 10000
24+
result.baz += b
25+
result.buzz += b
26+
27+
28+
block: # Compile-Time
29+
let
30+
a {.compileTime.} = Foo(val: 1)
31+
b {.compileTime.} = Foo(val: 2)
32+
c {.compileTime.} = Foo(val: 3)
33+
r {.compileTime.} = foobar(a, b, c)
34+
35+
static:
36+
doAssert r.bar.val == 12
37+
doAssert r.baz.val == 20
38+
doAssert r.buzz.val == 10020
39+
40+
####################################
41+
42+
block: # Run-time
43+
let
44+
a = Foo(val: 1)
45+
b = Foo(val: 2)
46+
c = Foo(val: 3)
47+
r = foobar(a, b, c)
48+
49+
# Expected values
50+
doAssert r.bar.val == 12
51+
doAssert r.baz.val == 20
52+
doAssert r.buzz.val == 10020

0 commit comments

Comments
 (0)