diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-06 12:12:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-06 12:12:10 +0200 |
commit | f16163d82bf7415c790f463177c8d8e737a93f9a (patch) | |
tree | afb992d8e3833e110584e93bf711e2c2015d4d3a /compiler | |
parent | 834c2abfd16b3ba20a4bee8920520a3e7583a4fe (diff) | |
parent | a76b74ed74c98eff41752fc9cb71676f527bab21 (diff) | |
download | Nim-f16163d82bf7415c790f463177c8d8e737a93f9a.tar.gz |
Merge pull request #4452 from yglukhov/js-enum-repr-offset
JS: Repr now works for enums starting with non-zero.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/jsgen.nim | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 8a631bb66..d7aa7f0f4 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1557,8 +1557,16 @@ proc genRepr(p: PProc, n: PNode, r: var TCompRes) = of tyEnum, tyOrdinal: gen(p, n.sons[1], r) useMagic(p, "cstrToNimstr") + var offset = "" + if t.kind == tyEnum: + let firstFieldOffset = t.n.sons[0].sym.position + if firstFieldOffset < 0: + offset = "+" & $(-firstFieldOffset) + elif firstFieldOffset > 0: + offset = "-" & $firstFieldOffset + r.kind = resExpr - r.res = "cstrToNimstr($1.node.sons[$2].name)" % [genTypeInfo(p, t), r.res] + r.res = "cstrToNimstr($1.node.sons[$2$3].name)" % [genTypeInfo(p, t), r.res, rope(offset)] else: # XXX: internalError(n.info, "genRepr: Not implemented") |