From c7e54eba91e31091a40dfa6d96a7a323db63b933 Mon Sep 17 00:00:00 2001 From: shsnow23 Date: Wed, 25 Jan 2017 00:59:34 +0900 Subject: [PATCH] fix genderef of jsgen (#5274) --- compiler/jsgen.nim | 2 +- tests/js/tderef.nim | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/js/tderef.nim diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index fd21d17ef3..34d78ea7c4 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 0000000000..ddb91bd42a --- /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]()