Bug 1172536 - Stop using for each loops in layout; r=roc

These are SpiderMonkey-proprietary legacy feature which has been deprecated
and is expected to be removed in due course.

This commit also fixes a number of bugs in test_bug708874.xul. In particular,
because of the semicolon after the for head, the (alleged) loop body was only
executed for the final element of the array ({}), and because each of the
functions under test threw an exception, only the first call was executed.

I do not know of a way to test the changes in frame-verify.js, so I can't
guarantee they actually work.
This commit is contained in:
Ms2ger 2015-06-20 09:16:51 +02:00
parent 53af35efa2
commit 909e2c851d
6 changed files with 17 additions and 18 deletions

View File

@ -21,7 +21,7 @@
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "SpecialPowers" ];
for each (var name in imports) {
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}

View File

@ -22,7 +22,7 @@
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "todo" ];
for each (var name in imports) {
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}

View File

@ -16,7 +16,7 @@
SimpleTest.waitForExplicitFinish();
var imports = [ "SimpleTest", "is", "isnot", "ok" ];
for each (var name in imports) {
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}

View File

@ -28,7 +28,7 @@
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "onerror" ];
for each (var name in imports) {
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}

View File

@ -13,7 +13,7 @@ function inheritsFrom(t, baseName)
if (name == baseName)
return true;
for each (let base in t.bases)
for (let base of t.bases)
if (inheritsFrom(base.type, baseName))
return true;
@ -33,7 +33,7 @@ function process_type(t)
output.push('CLASS-DEF: %s'.format(t.name));
for each (let base in t.bases) {
for (let base of t.bases) {
if (inheritsFrom(base.type, 'nsIFrame')) {
output.push('%s -> %s;'.format(base.type.name, t.name));
}
@ -43,7 +43,7 @@ function process_type(t)
}
output.push('%s [label="%s%s"];'.format(t.name, t.name,
["\\n(%s)".format(b) for each (b in nonFrameBases)].join('')));
nonFrameBases.map(b => "\\n(%s)".format(b)).join('')));
}
}
}
@ -83,7 +83,7 @@ function process_cp_pre_genericize(d)
function input_end()
{
for each (let [name, loc] in needIDs) {
for (let [name, loc] of needIDs) {
if (!haveIDs.hasOwnProperty(name)) {
error("nsQueryFrame<%s> found, but %s::kFrameIID is not declared".format(name, name), loc);
}

View File

@ -258,16 +258,15 @@ function testInvalid() {
}
function testNotElement() {
var values = [null, undefined, {}];
try {
for each (value in values); {
DOMUtils.hasPseudoClassLock(value, ":hover");
DOMUtils.addPseudoClassLock(value, ":hover");
DOMUtils.removePseudoClassLock(value, ":hover");
DOMUtils.clearPseudoClassLocks(value);
}
} catch(e) {
// just make sure we don't crash on non-elements
for (var value of [null, undefined, {}]) {
SimpleTest.doesThrow(() => DOMUtils.hasPseudoClassLock(value, ":hover"),
"hasPseudoClassLock should throw for " + value);
SimpleTest.doesThrow(() => DOMUtils.addPseudoClassLock(value, ":hover"),
"addPseudoClassLock should throw for " + value);
SimpleTest.doesThrow(() => DOMUtils.removePseudoClassLock(value, ":hover"),
"removePseudoClassLock should throw for " + value);
SimpleTest.doesThrow(() => DOMUtils.clearPseudoClassLocks(value),
"clearPseudoClassLocks should throw for " + value);
}
}
]]>