summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorshsnow23 <hsssnow23@users.noreply.github.com>2017-01-25 00:59:34 +0900
committerAndreas Rumpf <rumpf_a@web.de>2017-01-24 16:59:34 +0100
commitc7e54eba91e31091a40dfa6d96a7a323db63b933 (patch)
tree0ccf196c4a384c661cf23dad95c4918ada05312e
parentc54bffae5b4936a65461a0a84c9a0956702d0352 (diff)
downloadNim-c7e54eba91e31091a40dfa6d96a7a323db63b933.tar.gz
fix genderef of jsgen (#5274)
-rw-r--r--compiler/jsgen.nim2
-rw-r--r--tests/js/tderef.nim20
2 files changed, 21 insertions, 1 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index fd21d17ef..34d78ea7c 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -1200,7 +1200,7 @@ proc genDeref(p: PProc, n: PNode, r: var TCompRes) =
       r.res = "$1[$2]" % [a.address, a.res]
     elif n.sons[0].kind == nkCall:
       let tmp = p.getTemp
-      r.res = "($1 = $2, $1[0][$1[1]])" % [tmp, a.res]
+      r.res = "($1 = $2, $1[0])[$1[1]]" % [tmp, a.res]
     else:
       internalError(n.info, "genDeref")
 
diff --git a/tests/js/tderef.nim b/tests/js/tderef.nim
new file mode 100644
index 000000000..ddb91bd42
--- /dev/null
+++ b/tests/js/tderef.nim
@@ -0,0 +1,20 @@
+discard """
+  output: '''true
+'''
+"""
+
+import tables
+
+type EventStore = Table[string, seq[proc ()]]
+
+proc newEventStore(): EventStore =
+  initTable[string, seq[proc ()]]()
+
+proc register(store: var EventStore, name: string, callback: proc ()) =
+  if not store.hasKey(name):
+    store[name] = @[]
+  store[name].add(callback)
+
+var store = newEventStore()
+store.register("test", proc () = echo "true")
+store["test"][0]()