summary refs log tree commit diff stats
path: root/compiler/sem.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-07-10 00:59:26 +0200
committerAraq <rumpf_a@web.de>2014-07-10 00:59:26 +0200
commite4e32bdfbf72931c7e0e5692a30c3030490178e1 (patch)
treead95abfdea1e69470d05c9b27425f75d56924326 /compiler/sem.nim
parent44353c585f16da7ca868d5e0e748065c415648e8 (diff)
downloadNim-e4e32bdfbf72931c7e0e5692a30c3030490178e1.tar.gz
better error messages for macro instantiations
Diffstat (limited to 'compiler/sem.nim')
-rw-r--r--compiler/sem.nim3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/sem.nim b/compiler/sem.nim
index f12b638ac..8025ef70d 100644
--- a/compiler/sem.nim
+++ b/compiler/sem.nim
@@ -305,6 +305,8 @@ proc semAfterMacroCall(c: PContext, n: PNode, s: PSym,
 
 proc semMacroExpr(c: PContext, n, nOrig: PNode, sym: PSym,
                   flags: TExprFlags = {}): PNode =
+  pushInfoContext(nOrig.info)
+
   markUsed(n.info, sym)
   if sym == c.p.owner:
     globalError(n.info, errRecursiveDependencyX, sym.name.s)
@@ -315,6 +317,7 @@ proc semMacroExpr(c: PContext, n, nOrig: PNode, sym: PSym,
   result = evalMacroCall(c.module, n, nOrig, sym)
   if efNoSemCheck notin flags:
     result = semAfterMacroCall(c, result, sym, flags)
+  popInfoContext()
 
 proc forceBool(c: PContext, n: PNode): PNode = 
   result = fitNode(c, getSysType(tyBool), n)