diff options
author | Araq <rumpf_a@web.de> | 2013-08-31 02:07:52 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-08-31 02:07:52 +0200 |
commit | 6cc06cd35dc3aab58eb78757e76d5b72e5646c52 (patch) | |
tree | 11d4f8986208af2a0b7a225ac1ba85b29828ead3 /compiler | |
parent | 4d9b2f671ad1c8109c8478c9a78e05e25def5f78 (diff) | |
download | Nim-6cc06cd35dc3aab58eb78757e76d5b72e5646c52.tar.gz |
fixes #569; C++ codegen works again
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ccgexprs.nim | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 3475093cb..6b3906226 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -303,10 +303,11 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src)) of tyObject: # XXX: check for subtyping? - if needsComplexAssignment(dest.t): - if asgnComplexity(dest.t.n) <= 4: - discard getTypeDesc(p.module, dest.t) - genOptAsgnObject(p, dest, src, flags, dest.t.n) + if needsComplexAssignment(ty): + if asgnComplexity(ty.n) <= 4: + discard getTypeDesc(p.module, ty) + internalAssert ty.n != nil + genOptAsgnObject(p, dest, src, flags, ty.n) else: genGenericAsgn(p, dest, src, flags) else: @@ -642,14 +643,7 @@ proc genTupleElem(p: BProc, e: PNode, d: var TLoc) = case e.sons[1].kind of nkIntLit..nkUInt64Lit: i = int(e.sons[1].intVal) else: internalError(e.info, "genTupleElem") - when false: - if ty.n != nil: - var field = ty.n.sons[i].sym - if field == nil: InternalError(e.info, "genTupleElem") - if field.loc.r == nil: InternalError(e.info, "genTupleElem") - appf(r, ".$1", [field.loc.r]) - else: - appf(r, ".Field$1", [toRope(i)]) + appf(r, ".Field$1", [toRope(i)]) putIntoDest(p, d, ty.sons[i], r) proc genRecordField(p: BProc, e: PNode, d: var TLoc) = @@ -840,6 +834,7 @@ proc genAndOr(p: BProc, e: PNode, d: var TLoc, m: TMagic) = proc genEcho(p: BProc, n: PNode) = # this unusal way of implementing it ensures that e.g. ``echo("hallo", 45)`` # is threadsafe. + discard lists.IncludeStr(p.module.headerFiles, "<stdio.h>") var args: PRope = nil var a: TLoc for i in countup(1, n.len-1): |