summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-07-06 12:12:10 +0200
committerGitHub <noreply@github.com>2016-07-06 12:12:10 +0200
commitf16163d82bf7415c790f463177c8d8e737a93f9a (patch)
treeafb992d8e3833e110584e93bf711e2c2015d4d3a /compiler
parent834c2abfd16b3ba20a4bee8920520a3e7583a4fe (diff)
parenta76b74ed74c98eff41752fc9cb71676f527bab21 (diff)
downloadNim-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.nim10
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")