From 6c0425d574bc45417e126bb2712fb42ddf9e553c Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 6 May 2013 18:30:54 +0200 Subject: 'result/return' triggers a void context --- compiler/ccgexprs.nim | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'compiler/ccgexprs.nim') diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index a50b39d47..2f7804384 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -1799,10 +1799,20 @@ proc expr(p: BProc, n: PNode, d: var TLoc) = of nkCall, nkHiddenCallConv, nkInfix, nkPrefix, nkPostfix, nkCommand, nkCallStrLit: genLineDir(p, n) - if n.sons[0].kind == nkSym and n.sons[0].sym.magic != mNone: - genMagicExpr(p, n, d, n.sons[0].sym.magic) + let op = n.sons[0] + if n.typ.isNil: + # discard the value: + var a: TLoc + if op.kind == nkSym and op.sym.magic != mNone: + genMagicExpr(p, n, a, op.sym.magic) + else: + genCall(p, n, a) else: - genCall(p, n, d) + # load it into 'd': + if op.kind == nkSym and op.sym.magic != mNone: + genMagicExpr(p, n, d, op.sym.magic) + else: + genCall(p, n, d) of nkCurly: if isDeepConstExpr(n) and n.len != 0: putIntoDest(p, d, n.typ, genSetNode(p, n)) -- cgit 1.4.1-2-gfad0