summary refs log tree commit diff stats
diff options
context:
space:
mode:
-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]()