summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/evals.nim4
-rw-r--r--lib/core/macros.nim14
2 files changed, 10 insertions, 8 deletions
diff --git a/compiler/evals.nim b/compiler/evals.nim
index 2a9fae5f0..3f5b7887a 100644
--- a/compiler/evals.nim
+++ b/compiler/evals.nim
@@ -1099,7 +1099,7 @@ proc evalMagicOrCall(c: PEvalContext, n: PNode): PNode =
     result = evalAux(c, n.sons[2], {efLValue})
     if isSpecial(result): return 
     addSon(a, result)
-    result = emptyNode
+    result = a
   of mNAddMultiple: 
     result = evalAux(c, n.sons[1], {efLValue})
     if isSpecial(result): return 
@@ -1107,7 +1107,7 @@ proc evalMagicOrCall(c: PEvalContext, n: PNode): PNode =
     result = evalAux(c, n.sons[2], {efLValue})
     if isSpecial(result): return 
     for i in countup(0, sonsLen(result) - 1): addSon(a, result.sons[i])
-    result = emptyNode
+    result = a
   of mNDel: 
     result = evalAux(c, n.sons[1], {efLValue})
     if isSpecial(result): return 
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 4598fa9ea..949719316 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -130,12 +130,14 @@ proc `==`*(a, b: PNimrodNode): bool {.magic: "EqNimrodNode", noSideEffect.}
 proc len*(n: PNimrodNode): int {.magic: "NLen".}
   ## returns the number of children of `n`.
 
-proc add*(father, child: PNimrodNode) {.magic: "NAdd".}
-  ## adds the `child` to the `father` node
-
-proc add*(father: PNimrodNode, children: varargs[PNimrodNode]) {.
-  magic: "NAddMultiple".}
-  ## adds each child of `children` to the `father` node
+proc add*(father, child: PNimrodNode): PNimrodNode {.magic: "NAdd", discardable.}
+  ## Adds the `child` to the `father` node. Returns the
+  ## father node so that calls can be nested.
+
+proc add*(father: PNimrodNode, children: varargs[PNimrodNode]): PNimrodNode {.
+  magic: "NAddMultiple", discardable.}
+  ## Adds each child of `children` to the `father` node.
+  ## Returns the `father` node so that calls can be nested.
 
 proc del*(father: PNimrodNode, idx = 0, n = 1) {.magic: "NDel".}
   ## deletes `n` children of `father` starting at index `idx`.