parent
cb1ecbf956
commit
06d776a582
2 changed files with 17 additions and 17 deletions
|
|
@ -134,7 +134,7 @@ proc toTree(c: var Con; s: var Scope; ret: PNode; flags: set[ToTreeFlag]): PNode
|
||||||
var r = PNode(nil)
|
var r = PNode(nil)
|
||||||
if isExpr:
|
if isExpr:
|
||||||
result = newNodeIT(nkStmtListExpr, ret.info, ret.typ)
|
result = newNodeIT(nkStmtListExpr, ret.info, ret.typ)
|
||||||
if ret.kind == nkStmtListExpr:
|
if ret.kind in nkCallKinds + {nkStmtListExpr}:
|
||||||
r = getTemp(c, s, ret.typ, ret.info)
|
r = getTemp(c, s, ret.typ, ret.info)
|
||||||
else:
|
else:
|
||||||
result = newNodeI(nkStmtList, ret.info)
|
result = newNodeI(nkStmtList, ret.info)
|
||||||
|
|
@ -155,7 +155,13 @@ proc toTree(c: var Con; s: var Scope; ret: PNode; flags: set[ToTreeFlag]): PNode
|
||||||
result.add newTryFinally(ret, finSection)
|
result.add newTryFinally(ret, finSection)
|
||||||
else:
|
else:
|
||||||
if r != nil:
|
if r != nil:
|
||||||
result.add newTree(nkFastAsgn, r, ret)
|
if ret.kind == nkStmtListExpr:
|
||||||
|
# simplify it a bit further by merging the nkStmtListExprs
|
||||||
|
let last = ret.len - 1
|
||||||
|
for i in 0 ..< last: result.add ret[i]
|
||||||
|
result.add newTree(nkFastAsgn, r, ret[last])
|
||||||
|
else:
|
||||||
|
result.add newTree(nkFastAsgn, r, ret)
|
||||||
else:
|
else:
|
||||||
result.add ret
|
result.add ret
|
||||||
for m in s.wasMoved: result.add m
|
for m in s.wasMoved: result.add m
|
||||||
|
|
|
||||||
|
|
@ -105,20 +105,14 @@ proc escapeCheck =
|
||||||
escapeCheck()
|
escapeCheck()
|
||||||
|
|
||||||
# bug #14900
|
# bug #14900
|
||||||
template sortedByIt(seq1): untyped =
|
|
||||||
var result = seq1
|
|
||||||
result
|
|
||||||
|
|
||||||
proc seqsEqual(seq1, seq2: seq[string]): bool =
|
proc seqsEqual(a, b: string): bool =
|
||||||
# works as a normal proc (if we would assign result inside)
|
if false:
|
||||||
# doesn't work as an expression
|
false
|
||||||
result = if false: # needed
|
else:
|
||||||
false
|
(var result1 = a; result1) == (var result2 = b; result2)
|
||||||
else:
|
|
||||||
let a1 = seq1.sortedByIt()
|
|
||||||
let a2 = seq2.sortedByIt()
|
|
||||||
# echo a1 - works if you uncomment any of these
|
|
||||||
# echo a2
|
|
||||||
a1 == a2
|
|
||||||
|
|
||||||
echo seqsEqual(@["a", "b", "c"], @["a", "b", "c"])
|
# can be const or var too
|
||||||
|
let expected = "hello"
|
||||||
|
|
||||||
|
echo seqsEqual(expected, expected)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue