diff options
Diffstat (limited to 'tests/specialops')
-rw-r--r-- | tests/specialops/tcallops.nim | 10 | ||||
-rw-r--r-- | tests/specialops/terrmsgs.nim | 2 | ||||
-rw-r--r-- | tests/specialops/tsetter.nim | 10 |
3 files changed, 21 insertions, 1 deletions
diff --git a/tests/specialops/tcallops.nim b/tests/specialops/tcallops.nim index 0508a37a1..c541a0c1d 100644 --- a/tests/specialops/tcallops.nim +++ b/tests/specialops/tcallops.nim @@ -37,3 +37,13 @@ doAssert a(b) == "(12)" doAssert a.b(c) == `()`(b, a, c) doAssert (a.b)(c) == `()`(a.b, c) doAssert `()`(a.b, c) == `()`(`()`(b, a), c) + +block: # bug #1072 + var x: int + + proc foo(some:int):int = some + proc `()`(l,r:string): string = discard + + block: + var foo = 42 + doAssert x.foo == 0 diff --git a/tests/specialops/terrmsgs.nim b/tests/specialops/terrmsgs.nim index d1a790e54..081bca451 100644 --- a/tests/specialops/terrmsgs.nim +++ b/tests/specialops/terrmsgs.nim @@ -1,7 +1,7 @@ discard """ action: reject cmd: '''nim check $options $file''' -matrix: "; -d:testWithout" +matrix: "; -d:testWithout; --mm:refc" """ when not defined(testWithout): # test for same errors before and after diff --git a/tests/specialops/tsetter.nim b/tests/specialops/tsetter.nim new file mode 100644 index 000000000..6175cbec4 --- /dev/null +++ b/tests/specialops/tsetter.nim @@ -0,0 +1,10 @@ +block: # ensure RHS of setter statement is treated as call operand + proc `b=`(a: var int, c: proc (x: int): int) = + a = c(a) + + proc foo(x: int): int = x + 1 + proc foo(x: float): float = x - 1 + + var a = 123 + a.b = foo + doAssert a == 124 |