1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 04:07:59 +01:00

Override RealSet#add to match Set.add

This commit is contained in:
Kris Maglione
2014-02-22 10:07:58 -08:00
parent 9bb6dce76d
commit 619b414ca7
9 changed files with 23 additions and 44 deletions

View File

@@ -383,10 +383,8 @@ var Mappings = Module("mappings", {
let seen = RealSet(); let seen = RealSet();
for (let hive in this.hives.iterValues()) for (let hive in this.hives.iterValues())
for (let map in array(hive.getStack(mode)).iterValues()) for (let map in array(hive.getStack(mode)).iterValues())
if (!seen.has(map.name)) { if (!seen.add(map.name))
seen.add(map.name);
yield map; yield map;
}
}, },
// NOTE: just normal mode for now // NOTE: just normal mode for now
@@ -643,11 +641,9 @@ var Mappings = Module("mappings", {
let seen = RealSet(); let seen = RealSet();
for (let stack in values(hive.stacks)) for (let stack in values(hive.stacks))
for (let map in array.iterValues(stack)) for (let map in array.iterValues(stack))
if (!seen.has(map.id)) { if (!seen.add(map.id))
seen.add(map.id);
yield map; yield map;
} }
}
modeDescription = modeDescription ? " in " + modeDescription + " mode" : ""; modeDescription = modeDescription ? " in " + modeDescription + " mode" : "";
commands.add([ch ? ch + "m[ap]" : "map"], commands.add([ch ? ch + "m[ap]" : "map"],
@@ -758,8 +754,7 @@ var Mappings = Module("mappings", {
for (let hive in mappings.hives.iterValues()) for (let hive in mappings.hives.iterValues())
for (let map in array.iterValues(hive.getStack(mode))) for (let map in array.iterValues(hive.getStack(mode)))
for (let name in values(map.names)) for (let name in values(map.names))
if (!seen.has(name)) { if (!seen.add(name))
seen.add(name);
yield { yield {
name: name, name: name,
columns: [ columns: [
@@ -770,7 +765,6 @@ var Mappings = Module("mappings", {
], ],
__proto__: map __proto__: map
}; };
}
}, },
format: { format: {
description: function (map) [ description: function (map) [

View File

@@ -450,8 +450,7 @@ var Modes = Module("modes", {
res = [], res = [],
queue = [this].concat(this.bases); queue = [this].concat(this.bases);
for (let mode in array.iterValues(queue)) for (let mode in array.iterValues(queue))
if (!seen.has(mode)) { if (!seen.add(mode)) {
seen.add(mode);
res.push(mode); res.push(mode);
queue.push.apply(queue, mode.bases); queue.push.apply(queue, mode.bases);
} }

View File

@@ -246,11 +246,9 @@ function properties(obj, prototypes) {
try { try {
if ("dactylPropertyNames" in obj && !prototypes) if ("dactylPropertyNames" in obj && !prototypes)
for (let key in values(obj.dactylPropertyNames)) for (let key in values(obj.dactylPropertyNames))
if (key in obj && !seen.has(key)) { if (key in obj && !seen.add(key))
seen.add(key);
yield key; yield key;
} }
}
catch (e) {} catch (e) {}
function props(obj) { function props(obj) {
@@ -289,11 +287,9 @@ function properties(obj, prototypes) {
var iter = (v for each (v in props(obj))); var iter = (v for each (v in props(obj)));
for (let key in iter) for (let key in iter)
if (!prototypes || !seen.has(key) && obj != orig) { if (!prototypes || !seen.add(key) && obj != orig)
seen.add(key);
yield key; yield key;
} }
}
} }
function iterOwnProperties(obj) { function iterOwnProperties(obj) {
@@ -346,11 +342,9 @@ deprecated.warn = function warn(func, name, alternative, frame) {
frame = frame || Components.stack.caller.caller; frame = frame || Components.stack.caller.caller;
let filename = util.fixURI(frame.filename || "unknown"); let filename = util.fixURI(frame.filename || "unknown");
if (!func.seenCaller.has(filename)) { if (!func.seenCaller.add(filename))
func.seenCaller.add(filename);
util.dactyl(func).warn([util.urlPath(filename), frame.lineNumber, " "].join(":") util.dactyl(func).warn([util.urlPath(filename), frame.lineNumber, " "].join(":")
+ _("warn.deprecated", name, alternative)); + _("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 iterAll = deprecated("iter", function iterAll() iter.apply(null, arguments));
var RealSet = Set; 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 * Utility for managing sets of strings. Given an array, returns an
@@ -1567,10 +1567,8 @@ update(iter, {
uniq: function uniq(iter) { uniq: function uniq(iter) {
let seen = RealSet(); let seen = RealSet();
for (let item in iter) for (let item in iter)
if (!seen.has(item)) { if (!seen.add(item))
seen.add(item);
yield item; yield item;
}
}, },
/** /**

View File

@@ -206,10 +206,9 @@ var Cache = Module("Cache", XPCOM(Ci.nsIRequestObserver), {
} }
if (hasOwnProperty(this.providers, name)) { if (hasOwnProperty(this.providers, name)) {
util.assert(!this.providing.has(name), util.assert(!this.providing.add(name),
"Already generating cache for " + name, "Already generating cache for " + name,
false); false);
this.providing.add(name);
let [func, long] = this.providers[name]; let [func, long] = this.providers[name];
try { try {

View File

@@ -405,11 +405,9 @@ var Command = Class("Command", {
let key = type + ":" + (context ? context.file : "[Command Line]"); let key = type + ":" + (context ? context.file : "[Command Line]");
if (!this.complained.has(key)) { if (!this.complained.add(key))
this.complained.add(key);
this.modules.dactyl.warn(loc + message); this.modules.dactyl.warn(loc + message);
} }
}
}, { }, {
hasName: function hasName(specs, name) hasName: function hasName(specs, name)
specs.some(([long, short]) => specs.some(([long, short]) =>

View File

@@ -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)), has: function () Array.some(arguments, val => this.value.some(v => v.substr(1) == val)),
validator: function (value) { validator: function (value) {
let seen = {}; let seen = RealSet();
return value.every(val => /^[+-]/.test(val) && hasOwnProperty(this.values, val.substr(1)) 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; && value.length;
} }
}); });

View File

@@ -77,27 +77,21 @@ var JavaScript = Module("javascript", {
let globals = values(toplevel && this.window === obj ? this.globalNames : []); let globals = values(toplevel && this.window === obj ? this.globalNames : []);
if (toplevel && isObject(obj) && "wrappedJSObject" in obj) if (toplevel && isObject(obj) && "wrappedJSObject" in obj)
if (!seen.has("wrappedJSObject")) { if (!seen.add("wrappedJSObject"))
seen.add("wrappedJSObject");
yield "wrappedJSObject"; yield "wrappedJSObject";
}
for (let key in iter(globals, properties(obj, !toplevel))) for (let key in iter(globals, properties(obj, !toplevel)))
if (!seen.has(key)) { if (!seen.add(key))
seen.add(key);
yield key; yield key;
}
// Properties aren't visible in an XPCNativeWrapper until // Properties aren't visible in an XPCNativeWrapper until
// they're accessed. // they're accessed.
for (let key in properties(this.getKey(obj, "wrappedJSObject"), for (let key in properties(this.getKey(obj, "wrappedJSObject"),
!toplevel)) !toplevel))
try { try {
if (key in obj && !seen.has(key)) { if (key in obj && !seen.has(key))
seen.add(key);
yield key; yield key;
} }
}
catch (e) {} catch (e) {}
}, },

View File

@@ -269,9 +269,8 @@ overlay.overlayWindow(Object.keys(config.overlays),
if (loaded.has(module.className)) if (loaded.has(module.className))
return; return;
if (seen.has(module.className)) if (seen.add(module.className))
throw Error("Module dependency loop."); throw Error("Module dependency loop.");
seen.add(module.className);
for (let dep in values(module.requires)) for (let dep in values(module.requires))
this.loadModule(Module.constructors[dep], module.className); this.loadModule(Module.constructors[dep], module.className);

View File

@@ -59,10 +59,8 @@ var Messages = Module("messages", {
let seen = RealSet(); let seen = RealSet();
for (let bundle in values(this.bundles)) for (let bundle in values(this.bundles))
for (let { key, value } in iter(bundle.getSimpleEnumeration(), Ci.nsIPropertyElement)) for (let { key, value } in iter(bundle.getSimpleEnumeration(), Ci.nsIPropertyElement))
if (!seen.has(key)) { if (!seen.add(key))
seen.add(key);
yield [key, value]; yield [key, value];
}
}, },
get: function get(value, default_) { get: function get(value, default_) {