diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-02-04 10:39:49 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-02-04 10:39:49 +0100 |
commit | 7f14d0e7827ffd58ceb17e9b66025d8a9e54bc00 (patch) | |
tree | 1157d0e95be27ddb0015a2799490bffc1c83c331 /compiler | |
parent | 47c157e05e293c163dee3ddf3447b5df1e7ba7c8 (diff) | |
parent | 1a8541d908169470c4ee15ffdecd58f98c335e79 (diff) | |
download | Nim-7f14d0e7827ffd58ceb17e9b66025d8a9e54bc00.tar.gz |
Merge pull request #2031 from reactormonk/high-cstring
Fixes #2030
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/semexprs.nim | 2 | ||||
-rw-r--r-- | compiler/semfold.nim | 4 | ||||
-rw-r--r-- | compiler/vmgen.nim | 3 |
3 files changed, 5 insertions, 4 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index cd27cf15d..ab1b75994 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -306,7 +306,7 @@ proc semLowHigh(c: PContext, n: PNode, m: TMagic): PNode = var typ = skipTypes(n.sons[1].typ, abstractVarRange + {tyTypeDesc, tyFieldAccessor}) case typ.kind - of tySequence, tyString, tyOpenArray, tyVarargs: + of tySequence, tyString, tyCString, tyOpenArray, tyVarargs: n.typ = getSysType(tyInt) of tyArrayConstr, tyArray: n.typ = typ.sons[0] # indextype diff --git a/compiler/semfold.nim b/compiler/semfold.nim index 1988c512e..a3f1b1c13 100644 --- a/compiler/semfold.nim +++ b/compiler/semfold.nim @@ -665,8 +665,8 @@ proc getConstExpr(m: PSym, n: PNode): PNode = of mLow: result = newIntNodeT(firstOrd(n.sons[1].typ), n) of mHigh: - if skipTypes(n.sons[1].typ, abstractVar).kind notin - {tyOpenArray, tyVarargs, tySequence, tyString}: + if skipTypes(n.sons[1].typ, abstractVar).kind notin + {tySequence, tyString, tyCString, tyOpenArray, tyVarargs}: result = newIntNodeT(lastOrd(skipTypes(n[1].typ, abstractVar)), n) else: var a = getArrayConstr(m, n.sons[1]) diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 120120879..fe6526a34 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -893,7 +893,8 @@ proc genMagic(c: PCtx; n: PNode; dest: var TDest) = of mHigh: if dest < 0: dest = c.getTemp(n.typ) let tmp = c.genx(n.sons[1]) - if n.sons[1].typ.skipTypes(abstractVar-{tyTypeDesc}).kind == tyString: + case n.sons[1].typ.skipTypes(abstractVar-{tyTypeDesc}).kind: + of tyString, tyCString: c.gABI(n, opcLenStr, dest, tmp, 1) else: c.gABI(n, opcLenSeq, dest, tmp, 1) |