summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2015-02-04 10:39:49 +0100
committerAndreas Rumpf <rumpf_a@web.de>2015-02-04 10:39:49 +0100
commit7f14d0e7827ffd58ceb17e9b66025d8a9e54bc00 (patch)
tree1157d0e95be27ddb0015a2799490bffc1c83c331 /compiler
parent47c157e05e293c163dee3ddf3447b5df1e7ba7c8 (diff)
parent1a8541d908169470c4ee15ffdecd58f98c335e79 (diff)
downloadNim-7f14d0e7827ffd58ceb17e9b66025d8a9e54bc00.tar.gz
Merge pull request #2031 from reactormonk/high-cstring
Fixes #2030
Diffstat (limited to 'compiler')
-rw-r--r--compiler/semexprs.nim2
-rw-r--r--compiler/semfold.nim4
-rw-r--r--compiler/vmgen.nim3
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)