summary refs log tree commit diff stats
path: root/compiler/ccgexprs.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-10-19 13:24:42 +0200
committerAraq <rumpf_a@web.de>2012-10-19 13:24:42 +0200
commitb20663ce192ff8012b2d73113a5d506b8526ec62 (patch)
tree6fa10af32f8dd3ad8c594a41a8355231f1857933 /compiler/ccgexprs.nim
parent0df0012bdac2a987c47c6698e99b1e6645a05811 (diff)
downloadNim-b20663ce192ff8012b2d73113a5d506b8526ec62.tar.gz
fixes #232
Diffstat (limited to 'compiler/ccgexprs.nim')
-rwxr-xr-xcompiler/ccgexprs.nim5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim
index d6666d88b..72d95c4c7 100755
--- a/compiler/ccgexprs.nim
+++ b/compiler/ccgexprs.nim
@@ -1036,6 +1036,9 @@ proc genOf(p: BProc, x: PNode, typ: PType, d: var TLoc) =
     while (t.kind == tyObject) and (t.sons[0] != nil):
       app(r, ".Sup")
       t = skipTypes(t.sons[0], typedescInst)
+  if isObjLackingTypeField(t):
+    GlobalError(x.info, errGenerated, 
+      "no 'of' operator available for pure objects")
   if nilCheck != nil:
     r = ropecg(p.module, "(($1) && #isObj($2.m_type, $3))",
               [nilCheck, r, genTypeInfo(p.module, dest)])
@@ -1597,7 +1600,7 @@ proc upConv(p: BProc, n: PNode, d: var TLoc) =
   var a: TLoc
   initLocExpr(p, n.sons[0], a)
   var dest = skipTypes(n.typ, abstractPtrs)
-  if optObjCheck in p.options and not isPureObject(dest):
+  if optObjCheck in p.options and not isObjLackingTypeField(dest):
     var r = rdLoc(a)
     var nilCheck: PRope = nil
     var t = skipTypes(a.t, abstractInst)