From 43c70a6b12e24a6eed6e8b93cf21f225cef912da Mon Sep 17 00:00:00 2001 From: Andrii Riabushenko Date: Fri, 7 Dec 2018 22:25:32 +0000 Subject: improve test --- compiler/destroyer.nim | 14 +++++++++----- tests/destructor/tmove_objconstr.nim | 11 ++++++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/compiler/destroyer.nim b/compiler/destroyer.nim index 158e8cc4a..74a796e7c 100644 --- a/compiler/destroyer.nim +++ b/compiler/destroyer.nim @@ -441,11 +441,15 @@ proc pArg(arg: PNode; c: var Con; isSink: bool): PNode = elif arg.kind == nkSym and isSinkParam(arg.sym): # mark the sink parameter as used: result = destructiveMoveSink(arg, c) - elif arg.kind in {nkStmtListExpr, nkBlockExpr, nkBlockStmt}: - result = copyNode(arg) - for i in 0..arg.len-2: - result.add p(arg[i], c) - result.add pArg(arg[^1], c, isSink) + elif arg.kind in {nkBlockExpr, nkBlockStmt}: + result = copyNode(arg) + result.add arg[0] + result.add pArg(arg[1], c, isSink) + elif arg.kind == nkStmtListExpr: + result = copyNode(arg) + for i in 0..arg.len-2: + result.add p(arg[i], c) + result.add pArg(arg[^1], c, isSink) elif arg.kind in {nkIfExpr, nkIfStmt}: result = copyNode(arg) for i in 0.. 5: raise newException(ValueError, "new error") else: newMySeq(x, 1.0), - b:0, - c: if y > 0: move(cc) else: newMySeq(1, 3.0)) + b: 0, + c: block: + var tmp = if y > 0: move(cc) else: newMySeq(1, 3.0) + tmp[0] = 5 + tmp + ) + let (seq1, seq2) = myfunc(2, 3) doAssert seq1.len == 2 @@ -160,4 +165,4 @@ seq4 = var ii = 1 let arr2 = [newMySeq(2, 5.0), if i > 1: newMySeq(3, 1.0) else: newMySeq(0, 0.0)] -var seqOfSeq2 = @[newMySeq(2, 5.0), newMySeq(3, 1.0)] \ No newline at end of file +var seqOfSeq2 = @[newMySeq(2, 5.0), newMySeq(3, 1.0)] -- cgit 1.4.1-2-gfad0