diff options
author | Araq <rumpf_a@web.de> | 2015-03-18 13:36:38 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-03-21 20:38:25 +0100 |
commit | 16adfcdfa65cc6ea4c184e65c0487d2c1068b9c5 (patch) | |
tree | 0d8bba29a79c0e7a826167f7179ad47445654dad | |
parent | 880e39d12307809cb81ffcf4669a28527e9076f8 (diff) | |
download | Nim-16adfcdfa65cc6ea4c184e65c0487d2c1068b9c5.tar.gz |
fixes #2366
-rw-r--r-- | compiler/ccgexprs.nim | 1 | ||||
-rw-r--r-- | compiler/renderer.nim | 7 | ||||
-rw-r--r-- | 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})) |