summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-03-18 13:36:38 +0100
committerAraq <rumpf_a@web.de>2015-03-21 20:38:25 +0100
commit16adfcdfa65cc6ea4c184e65c0487d2c1068b9c5 (patch)
tree0d8bba29a79c0e7a826167f7179ad47445654dad
parent880e39d12307809cb81ffcf4669a28527e9076f8 (diff)
downloadNim-16adfcdfa65cc6ea4c184e65c0487d2c1068b9c5.tar.gz
fixes #2366
-rw-r--r--compiler/ccgexprs.nim1
-rw-r--r--compiler/renderer.nim7
-rw-r--r--compiler/semexprs.nim2
3 files changed, 8 insertions, 2 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim
index 564d1fd36..2b26b33e7 100644
--- a/compiler/ccgexprs.nim
+++ b/compiler/ccgexprs.nim
@@ -762,6 +762,7 @@ proc genRecordField(p: BProc, e: PNode, d: var TLoc) =
     if field.loc.r == nil: internalError(e.info, "genRecordField 3")
     appf(r, ".$1", [field.loc.r])
     putIntoDest(p, d, field.typ, r)
+  #d.s = a.s
 
 proc genInExprAux(p: BProc, e: PNode, a, b, d: var TLoc)
 
diff --git a/compiler/renderer.nim b/compiler/renderer.nim
index 689bf23c8..d6be3c81c 100644
--- a/compiler/renderer.nim
+++ b/compiler/renderer.nim
@@ -1269,9 +1269,12 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
     putWithSpace(g, tkColon, ":")
     gcoms(g)
     gstmts(g, n.sons[0], c)
-  of nkFinally:
+  of nkFinally, nkDefer:
     optNL(g)
-    put(g, tkFinally, "finally")
+    if n.kind == nkFinally:
+      put(g, tkFinally, "finally")
+    else:
+      put(g, tkDefer, "defer")
     putWithSpace(g, tkColon, ":")
     gcoms(g)
     gstmts(g, n.sons[0], c)
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index d236687c3..781efb891 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -2224,6 +2224,8 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode =
     result = semPragmaBlock(c, n)
   of nkStaticStmt:
     result = semStaticStmt(c, n)
+  of nkDefer:
+    localError(n.info, errGenerated, "'defer' not allowed in this context")
   else:
     localError(n.info, errInvalidExpressionX,
                renderTree(n, {renderNoComments}))