From 16adfcdfa65cc6ea4c184e65c0487d2c1068b9c5 Mon Sep 17 00:00:00 2001 From: Araq Date: Wed, 18 Mar 2015 13:36:38 +0100 Subject: fixes #2366 --- compiler/ccgexprs.nim | 1 + compiler/renderer.nim | 7 +++++-- compiler/semexprs.nim | 2 ++ 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})) -- cgit 1.4.1-2-gfad0