summaryrefslogtreecommitdiff
path: root/ext/bg/js/translator.js
diff options
context:
space:
mode:
authorispedals <ispedals@users.noreply.github.com>2016-06-18 18:33:51 -0400
committerispedals <ispedals@users.noreply.github.com>2016-06-19 12:54:22 -0400
commit5e0ac4e8ea32c3e33de38db02d7dcbebfdd05cda (patch)
tree3cc8d605c1d21e7998744506ce88bcf043797b65 /ext/bg/js/translator.js
parentb4fe1f1fa6064162adfa7b6eee5f397f190ae8bf (diff)
Workaround spidermonkey bug so dictionary data loads
We need to make a copy of the iteration variable in the for-of loop so that the distinct values are available in the callback.
Diffstat (limited to 'ext/bg/js/translator.js')
-rw-r--r--ext/bg/js/translator.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js
index bf1538e2..261196d2 100644
--- a/ext/bg/js/translator.js
+++ b/ext/bg/js/translator.js
@@ -46,8 +46,17 @@ class Translator {
const pendingLoads = [];
for (let key of files) {
+ /*
+ Spidermonkey does not implement lexical bindings for for-of loop
+ (see https://bugzilla.mozilla.org/show_bug.cgi?id=449811)
+ so we need to manually make a new declaration for key.
+ Otherwise key will always remain the same in the callback to loadData
+ and the dictionary data will not be set correctly
+ */
+ let key_ = key;
pendingLoads.push(key);
Translator.loadData(this.paths[key], (response) => {
+ let key = key_
switch (key) {
case 'rules':
this.deinflector.setRules(JSON.parse(response));