mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-20 07:51:32 +00:00
@@ -134,7 +134,7 @@ proc toTree(c: var Con; s: var Scope; ret: PNode; flags: set[ToTreeFlag]): PNode
|
||||
var r = PNode(nil)
|
||||
if isExpr:
|
||||
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)
|
||||
else:
|
||||
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)
|
||||
else:
|
||||
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:
|
||||
result.add ret
|
||||
for m in s.wasMoved: result.add m
|
||||
|
||||
@@ -105,20 +105,14 @@ proc escapeCheck =
|
||||
escapeCheck()
|
||||
|
||||
# bug #14900
|
||||
template sortedByIt(seq1): untyped =
|
||||
var result = seq1
|
||||
result
|
||||
|
||||
proc seqsEqual(seq1, seq2: seq[string]): bool =
|
||||
# works as a normal proc (if we would assign result inside)
|
||||
# doesn't work as an expression
|
||||
result = if false: # needed
|
||||
false
|
||||
else:
|
||||
let a1 = seq1.sortedByIt()
|
||||
let a2 = seq2.sortedByIt()
|
||||
# echo a1 - works if you uncomment any of these
|
||||
# echo a2
|
||||
a1 == a2
|
||||
proc seqsEqual(a, b: string): bool =
|
||||
if false:
|
||||
false
|
||||
else:
|
||||
(var result1 = a; result1) == (var result2 = b; result2)
|
||||
|
||||
echo seqsEqual(@["a", "b", "c"], @["a", "b", "c"])
|
||||
# can be const or var too
|
||||
let expected = "hello"
|
||||
|
||||
echo seqsEqual(expected, expected)
|
||||
|
||||
Reference in New Issue
Block a user