This commit is contained in:
Araq
2015-09-23 15:04:43 +02:00
parent 90d1ad4231
commit f937637a92
2 changed files with 26 additions and 2 deletions

View File

@@ -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) =

21
tests/vm/tyaytypedesc.nim Normal file
View File

@@ -0,0 +1,21 @@
discard """
output: "ntWhitespace"
"""
# bug #3357
type NodeType* = enum
ntWhitespace
type TokenType* = enum
ttWhitespace
proc enumTable*[A, B, C](a: openarray[tuple[key: A, val: B]], ret: typedesc[C]): C =
for item in a:
result[item.key] = item.val
const tokenTypeToNodeType = {
ttWhitespace: ntWhitespace,
}.enumTable(array[ttWhitespace..ttWhitespace, NodeType])
echo tokenTypeToNodeType[ttWhitespace]