diff options
Diffstat (limited to 'tests/arc')
-rw-r--r-- | tests/arc/tmovebug.nim | 25 | ||||
-rw-r--r-- | tests/arc/topt_no_cursor.nim | 2 |
2 files changed, 24 insertions, 3 deletions
diff --git a/tests/arc/tmovebug.nim b/tests/arc/tmovebug.nim index 002bd6796..8ad7c955c 100644 --- a/tests/arc/tmovebug.nim +++ b/tests/arc/tmovebug.nim @@ -93,6 +93,7 @@ destroy destroy destroy sink +sink destroy copy (f: 1) @@ -767,8 +768,7 @@ proc initC(): C = C(o: initO()) proc pair(): tuple[a: C, b: C] = - result.a = initC() # <- when firstWrite tries to find this node to start its analysis it fails, because injectdestructors uses copyTree/shallowCopy - result.b = initC() + result = (a: initC(), b: initC())# <- when firstWrite tries to find this node to start its analysis it fails, because injectdestructors uses copyTree/shallowCopy discard pair() @@ -818,3 +818,24 @@ proc atomicClosureOp = atomicClosureOp() + +template assertEq(a, b: untyped): untyped = + block: + let + aval = a + bval = b + + if aval != bval: + quit "bug!" + +proc convoluted = + let _ = (; + var val1: string; + if true: val1 = "22" + true + ) + + assertEq val1, "22" + assertEq val1, "22" + +convoluted() diff --git a/tests/arc/topt_no_cursor.nim b/tests/arc/topt_no_cursor.nim index 0de7f41b9..fbcff6144 100644 --- a/tests/arc/topt_no_cursor.nim +++ b/tests/arc/topt_no_cursor.nim @@ -49,7 +49,7 @@ _ = ( blitTmp, ";") lvalue = _[0] lnext = _[1] -result.value = move lvalue +`=sink`(result.value, move lvalue) `=destroy`(lnext) `=destroy_1`(lvalue) -- end of expandArc ------------------------ |