summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-09-23 15:04:43 +0200
committerAraq <rumpf_a@web.de>2015-09-23 21:46:33 +0200
commitf937637a926e8c9eba53d8de9ebdba932a344db4 (patch)
tree607dc6c5cfb6d6eef794fe8e12d376cc5bd84efe /compiler
parent90d1ad4231a0b83ecac7074f34af058d475e06ee (diff)
downloadNim-f937637a926e8c9eba53d8de9ebdba932a344db4.tar.gz
fixes #3357
Diffstat (limited to 'compiler')
-rw-r--r--compiler/vmgen.nim7
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim
index 32982602b..95fa43b48 100644
--- a/compiler/vmgen.nim
+++ b/compiler/vmgen.nim
@@ -1377,10 +1377,13 @@ proc genCheckedObjAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) =
   genObjAccess(c, n.sons[0], dest, flags)
 
 proc genArrAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) =
-  if n.sons[0].typ.skipTypes(abstractVarRange-{tyTypeDesc}).kind in {
-      tyString, tyCString}:
+  let arrayType = n.sons[0].typ.skipTypes(abstractVarRange-{tyTypeDesc}).kind
+  if arrayType in {tyString, tyCString}:
     genArrAccess2(c, n, dest, opcLdStrIdx, {})
+  elif arrayType == tyTypeDesc:
+    c.genTypeLit(n.typ, dest)
   else:
+    echo renderTree(n)
     genArrAccess2(c, n, dest, opcLdArr, flags)
 
 proc getNullValueAux(obj: PNode, result: PNode) =