diff options
-rw-r--r-- | compiler/jsgen.nim | 2 | ||||
-rw-r--r-- | tests/js/tderef.nim | 20 |
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]() |