fixes #3357
This commit is contained in:
parent
90d1ad4231
commit
f937637a92
2 changed files with 26 additions and 2 deletions
|
|
@ -1377,10 +1377,13 @@ proc genCheckedObjAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) =
|
||||||
genObjAccess(c, n.sons[0], dest, flags)
|
genObjAccess(c, n.sons[0], dest, flags)
|
||||||
|
|
||||||
proc genArrAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) =
|
proc genArrAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) =
|
||||||
if n.sons[0].typ.skipTypes(abstractVarRange-{tyTypeDesc}).kind in {
|
let arrayType = n.sons[0].typ.skipTypes(abstractVarRange-{tyTypeDesc}).kind
|
||||||
tyString, tyCString}:
|
if arrayType in {tyString, tyCString}:
|
||||||
genArrAccess2(c, n, dest, opcLdStrIdx, {})
|
genArrAccess2(c, n, dest, opcLdStrIdx, {})
|
||||||
|
elif arrayType == tyTypeDesc:
|
||||||
|
c.genTypeLit(n.typ, dest)
|
||||||
else:
|
else:
|
||||||
|
echo renderTree(n)
|
||||||
genArrAccess2(c, n, dest, opcLdArr, flags)
|
genArrAccess2(c, n, dest, opcLdArr, flags)
|
||||||
|
|
||||||
proc getNullValueAux(obj: PNode, result: PNode) =
|
proc getNullValueAux(obj: PNode, result: PNode) =
|
||||||
|
|
|
||||||
21
tests/vm/tyaytypedesc.nim
Normal file
21
tests/vm/tyaytypedesc.nim
Normal 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]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue