From 619b414ca787b08a19bc080d7cef8a1edf5ebee7 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sat, 22 Feb 2014 10:07:58 -0800 Subject: [PATCH] Override RealSet#add to match Set.add --- common/content/mappings.js | 12 +++--------- common/content/modes.js | 3 +-- common/modules/base.jsm | 22 ++++++++++------------ common/modules/cache.jsm | 3 +-- common/modules/commands.jsm | 4 +--- common/modules/downloads.jsm | 4 ++-- common/modules/javascript.jsm | 12 +++--------- common/modules/main.jsm | 3 +-- common/modules/messages.jsm | 4 +--- 9 files changed, 23 insertions(+), 44 deletions(-) diff --git a/common/content/mappings.js b/common/content/mappings.js index 8109a579..ca18742e 100644 --- a/common/content/mappings.js +++ b/common/content/mappings.js @@ -383,10 +383,8 @@ var Mappings = Module("mappings", { let seen = RealSet(); for (let hive in this.hives.iterValues()) for (let map in array(hive.getStack(mode)).iterValues()) - if (!seen.has(map.name)) { - seen.add(map.name); + if (!seen.add(map.name)) yield map; - } }, // NOTE: just normal mode for now @@ -643,10 +641,8 @@ var Mappings = Module("mappings", { let seen = RealSet(); for (let stack in values(hive.stacks)) for (let map in array.iterValues(stack)) - if (!seen.has(map.id)) { - seen.add(map.id); + if (!seen.add(map.id)) yield map; - } } modeDescription = modeDescription ? " in " + modeDescription + " mode" : ""; @@ -758,8 +754,7 @@ var Mappings = Module("mappings", { for (let hive in mappings.hives.iterValues()) for (let map in array.iterValues(hive.getStack(mode))) for (let name in values(map.names)) - if (!seen.has(name)) { - seen.add(name); + if (!seen.add(name)) yield { name: name, columns: [ @@ -770,7 +765,6 @@ var Mappings = Module("mappings", { ], __proto__: map }; - } }, format: { description: function (map) [ diff --git a/common/content/modes.js b/common/content/modes.js index 6666dc46..a6183522 100644 --- a/common/content/modes.js +++ b/common/content/modes.js @@ -450,8 +450,7 @@ var Modes = Module("modes", { res = [], queue = [this].concat(this.bases); for (let mode in array.iterValues(queue)) - if (!seen.has(mode)) { - seen.add(mode); + if (!seen.add(mode)) { res.push(mode); queue.push.apply(queue, mode.bases); } diff --git a/common/modules/base.jsm b/common/modules/base.jsm index e71407cb..25376a26 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -246,10 +246,8 @@ function properties(obj, prototypes) { try { if ("dactylPropertyNames" in obj && !prototypes) for (let key in values(obj.dactylPropertyNames)) - if (key in obj && !seen.has(key)) { - seen.add(key); + if (key in obj && !seen.add(key)) yield key; - } } catch (e) {} @@ -289,10 +287,8 @@ function properties(obj, prototypes) { var iter = (v for each (v in props(obj))); for (let key in iter) - if (!prototypes || !seen.has(key) && obj != orig) { - seen.add(key); + if (!prototypes || !seen.add(key) && obj != orig) yield key; - } } } @@ -346,11 +342,9 @@ deprecated.warn = function warn(func, name, alternative, frame) { frame = frame || Components.stack.caller.caller; let filename = util.fixURI(frame.filename || "unknown"); - if (!func.seenCaller.has(filename)) { - func.seenCaller.add(filename); + if (!func.seenCaller.add(filename)) util.dactyl(func).warn([util.urlPath(filename), frame.lineNumber, " "].join(":") + _("warn.deprecated", name, alternative)); - } } /** @@ -394,6 +388,12 @@ var forEach = deprecated("iter.forEach", function forEach() iter.forEach.apply(i var iterAll = deprecated("iter", function iterAll() iter.apply(null, arguments)); var RealSet = Set; +let Set_add = RealSet.prototype.add; +RealSet.prototype.add = function RealSet_add(val) { + let res = this.has(val); + Set_add.apply(this, arguments); + return res; +}; /** * Utility for managing sets of strings. Given an array, returns an @@ -1567,10 +1567,8 @@ update(iter, { uniq: function uniq(iter) { let seen = RealSet(); for (let item in iter) - if (!seen.has(item)) { - seen.add(item); + if (!seen.add(item)) yield item; - } }, /** diff --git a/common/modules/cache.jsm b/common/modules/cache.jsm index 25bbdf12..e334b613 100644 --- a/common/modules/cache.jsm +++ b/common/modules/cache.jsm @@ -206,10 +206,9 @@ var Cache = Module("Cache", XPCOM(Ci.nsIRequestObserver), { } if (hasOwnProperty(this.providers, name)) { - util.assert(!this.providing.has(name), + util.assert(!this.providing.add(name), "Already generating cache for " + name, false); - this.providing.add(name); let [func, long] = this.providers[name]; try { diff --git a/common/modules/commands.jsm b/common/modules/commands.jsm index afb54b7e..0855fa2a 100644 --- a/common/modules/commands.jsm +++ b/common/modules/commands.jsm @@ -405,10 +405,8 @@ var Command = Class("Command", { let key = type + ":" + (context ? context.file : "[Command Line]"); - if (!this.complained.has(key)) { - this.complained.add(key); + if (!this.complained.add(key)) this.modules.dactyl.warn(loc + message); - } } }, { hasName: function hasName(specs, name) diff --git a/common/modules/downloads.jsm b/common/modules/downloads.jsm index ff534265..262adbba 100644 --- a/common/modules/downloads.jsm +++ b/common/modules/downloads.jsm @@ -534,9 +534,9 @@ var Downloads_ = Module("downloads", XPCOM(Ci.nsIDownloadProgressListener), { has: function () Array.some(arguments, val => this.value.some(v => v.substr(1) == val)), validator: function (value) { - let seen = {}; + let seen = RealSet(); return value.every(val => /^[+-]/.test(val) && hasOwnProperty(this.values, val.substr(1)) - && !Set.add(seen, val.substr(1))) + && !seen.add(val.substr(1))) && value.length; } }); diff --git a/common/modules/javascript.jsm b/common/modules/javascript.jsm index cf52093a..58b24017 100644 --- a/common/modules/javascript.jsm +++ b/common/modules/javascript.jsm @@ -77,26 +77,20 @@ var JavaScript = Module("javascript", { let globals = values(toplevel && this.window === obj ? this.globalNames : []); if (toplevel && isObject(obj) && "wrappedJSObject" in obj) - if (!seen.has("wrappedJSObject")) { - seen.add("wrappedJSObject"); + if (!seen.add("wrappedJSObject")) yield "wrappedJSObject"; - } for (let key in iter(globals, properties(obj, !toplevel))) - if (!seen.has(key)) { - seen.add(key); + if (!seen.add(key)) yield key; - } // Properties aren't visible in an XPCNativeWrapper until // they're accessed. for (let key in properties(this.getKey(obj, "wrappedJSObject"), !toplevel)) try { - if (key in obj && !seen.has(key)) { - seen.add(key); + if (key in obj && !seen.has(key)) yield key; - } } catch (e) {} }, diff --git a/common/modules/main.jsm b/common/modules/main.jsm index cdcf9bd5..13fd5aba 100644 --- a/common/modules/main.jsm +++ b/common/modules/main.jsm @@ -269,9 +269,8 @@ overlay.overlayWindow(Object.keys(config.overlays), if (loaded.has(module.className)) return; - if (seen.has(module.className)) + if (seen.add(module.className)) throw Error("Module dependency loop."); - seen.add(module.className); for (let dep in values(module.requires)) this.loadModule(Module.constructors[dep], module.className); diff --git a/common/modules/messages.jsm b/common/modules/messages.jsm index 1b65009d..82c0f3c6 100644 --- a/common/modules/messages.jsm +++ b/common/modules/messages.jsm @@ -59,10 +59,8 @@ var Messages = Module("messages", { let seen = RealSet(); for (let bundle in values(this.bundles)) for (let { key, value } in iter(bundle.getSimpleEnumeration(), Ci.nsIPropertyElement)) - if (!seen.has(key)) { - seen.add(key); + if (!seen.add(key)) yield [key, value]; - } }, get: function get(value, default_) {