summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xcompiler/ast.nim4
-rwxr-xr-xcompiler/ccgtypes.nim2
-rwxr-xr-xcompiler/ecmasgen.nim10
-rwxr-xr-xlib/system/assign.nim6
-rwxr-xr-xlib/system/gc.nim2
-rwxr-xr-xlib/system/hti.nim5
-rwxr-xr-xlib/system/repr.nim4
7 files changed, 19 insertions, 14 deletions
diff --git a/compiler/ast.nim b/compiler/ast.nim
index 200f32ed2..fb4300c89 100755
--- a/compiler/ast.nim
+++ b/compiler/ast.nim
@@ -265,6 +265,10 @@ type
     tyIter, # unused
     tyProxy # currently unused
 
+const
+  tyPureObject* = tyTuple
+
+type
   TTypeKinds* = set[TTypeKind]
 
   TNodeFlag* = enum
diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim
index 99f9ba3b0..0123b69f9 100755
--- a/compiler/ccgtypes.nim
+++ b/compiler/ccgtypes.nim
@@ -553,7 +553,7 @@ proc genTypeInfoAuxBase(m: BModule, typ: PType, name, base: PRope) =
   allocMemTI(m, typ, name)
   if (typ.kind == tyObject) and (tfFinal in typ.flags) and
       (typ.sons[0] == nil): 
-    nimtypeKind = ord(high(TTypeKind)) + 1 # tyPureObject
+    nimtypeKind = ord(tyPureObject)
   else:
     nimtypeKind = ord(typ.kind)
   appf(m.s[cfsTypeInit3], 
diff --git a/compiler/ecmasgen.nim b/compiler/ecmasgen.nim
index d597da193..42643b39e 100755
--- a/compiler/ecmasgen.nim
+++ b/compiler/ecmasgen.nim
@@ -86,7 +86,7 @@ proc initProc(p: var TProc, globals: PGlobals, module: BModule, procDef: PNode,
   
 const 
   MappedToObject = {tyObject, tyArray, tyArrayConstr, tyTuple, tyOpenArray, 
-    tySet, tyVar, tyRef, tyPtr}
+    tySet, tyVar, tyRef, tyPtr, tyBigNum}
 
 proc mapType(typ: PType): TEcmasTypeKind = 
   var t = skipTypes(typ, abstractInst)
@@ -99,13 +99,15 @@ proc mapType(typ: PType): TEcmasTypeKind =
   of tyPointer: 
     # treat a tyPointer like a typed pointer to an array of bytes
     result = etyInt
-  of tyRange, tyDistinct, tyOrdinal: result = mapType(t.sons[0])
-  of tyInt..tyInt64, tyEnum, tyChar: result = etyInt
+  of tyRange, tyDistinct, tyOrdinal, tyConst, tyMutable, tyIter, tyVarargs,
+     tyProxy: 
+    result = mapType(t.sons[0])
+  of tyInt..tyInt64, tyUInt..tyUInt64, tyEnum, tyChar: result = etyInt
   of tyBool: result = etyBool
   of tyFloat..tyFloat128: result = etyFloat
   of tySet: result = etyObject # map a set to a table
   of tyString, tySequence: result = etyInt # little hack to get right semantics
-  of tyObject, tyArray, tyArrayConstr, tyTuple, tyOpenArray: 
+  of tyObject, tyArray, tyArrayConstr, tyTuple, tyOpenArray, tyBigNum: 
     result = etyObject
   of tyNil: result = etyNull
   of tyGenericInst, tyGenericParam, tyGenericBody, tyGenericInvokation, tyNone, 
diff --git a/lib/system/assign.nim b/lib/system/assign.nim
index 464dfb36c..9ba8cf614 100755
--- a/lib/system/assign.nim
+++ b/lib/system/assign.nim
@@ -62,7 +62,7 @@ proc genericAssignAux(dest, src: Pointer, mt: PNimType, shallow: bool) =
     var dstseq = cast[PGenericSeq](dst)
     dstseq.len = seq.len
     dstseq.space = seq.len
-  of tyObject, tyTuple, tyPureObject:
+  of tyObject, tyTuple:
     # we don't need to copy m_type field for tyObject, as they are equal anyway
     genericAssignAux(dest, src, mt.node, shallow)
   of tyArray, tyArrayConstr:
@@ -121,7 +121,7 @@ proc objectInit(dest: Pointer, typ: PNimType) =
     var pint = cast[ptr PNimType](dest)
     pint[] = typ
     objectInitAux(dest, typ.node)
-  of tyTuple, tyPureObject:
+  of tyTuple:
     objectInitAux(dest, typ.node)
   of tyArray, tyArrayConstr:
     for i in 0..(typ.size div typ.base.size)-1:
@@ -149,7 +149,7 @@ proc genericReset(dest: Pointer, mt: PNimType) =
   case mt.Kind
   of tyString, tyRef, tySequence:
     unsureAsgnRef(cast[ppointer](dest), nil)
-  of tyObject, tyTuple, tyPureObject:
+  of tyObject, tyTuple:
     # we don't need to reset m_type field for tyObject
     genericResetAux(dest, mt.node)
   of tyArray, tyArrayConstr:
diff --git a/lib/system/gc.nim b/lib/system/gc.nim
index d1fa98514..9e0e88612 100755
--- a/lib/system/gc.nim
+++ b/lib/system/gc.nim
@@ -301,7 +301,7 @@ proc forAllChildrenAux(dest: Pointer, mt: PNimType, op: TWalkOp) =
     case mt.Kind
     of tyRef, tyString, tySequence: # leaf:
       doOperation(cast[ppointer](d)[], op)
-    of tyObject, tyTuple, tyPureObject:
+    of tyObject, tyTuple:
       forAllSlotsAux(dest, mt.node, op)
     of tyArray, tyArrayConstr, tyOpenArray:
       for i in 0..(mt.size div mt.base.size)-1:
diff --git a/lib/system/hti.nim b/lib/system/hti.nim
index c5b6967ef..ff669be18 100755
--- a/lib/system/hti.nim
+++ b/lib/system/hti.nim
@@ -27,7 +27,7 @@ type # This should be he same as ast.TTypeKind
     tyOrdinal,
     tyArray,
     tyObject,
-    tyTuple,
+    tyTuple,             # WARNING: The compiler uses tyTuple for pure objects!
     tySet,
     tyRange,
     tyPtr, tyRef,
@@ -37,8 +37,7 @@ type # This should be he same as ast.TTypeKind
     tyPointer, tyOpenArray,
     tyString, tyCString, tyForward,
     tyInt, tyInt8, tyInt16, tyInt32, tyInt64,
-    tyFloat, tyFloat32, tyFloat64, tyFloat128,
-    tyPureObject # signals that object has no `n_type` field
+    tyFloat, tyFloat32, tyFloat64, tyFloat128
 
   TNimNodeKind = enum nkNone, nkSlot, nkList, nkCase
   TNimNode {.codegenType, final.} = object
diff --git a/lib/system/repr.nim b/lib/system/repr.nim
index 6b940ccb4..82bc8aace 100755
--- a/lib/system/repr.nim
+++ b/lib/system/repr.nim
@@ -201,7 +201,7 @@ when not defined(useNimRtl):
     case typ.kind
     of tySet: reprSetAux(result, p, typ)
     of tyArray: reprArray(result, p, typ, cl)
-    of tyTuple, tyPureObject: reprRecord(result, p, typ, cl)
+    of tyTuple: reprRecord(result, p, typ, cl)
     of tyObject: 
       var t = cast[ptr PNimType](p)[]
       reprRecord(result, p, t, cl)
@@ -251,7 +251,7 @@ when not defined(useNimRtl):
       cl: TReprClosure
     initReprClosure(cl)
     result = ""
-    if typ.kind in {tyObject, tyPureObject, tyTuple, tyArray, tySet}:
+    if typ.kind in {tyObject, tyTuple, tyArray, tySet}:
       reprAux(result, p, typ, cl)
     else:
       var p = p