/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//----------------------------------------------------------------------------- var summary = "Order of destructuring, destructuring in the presence of " + "exceptions"; var actual, expect;
printStatus(summary);
/************** * BEGIN TEST *
**************/
var failed = false;
var a = "FAILED", b = "PASSED";
function exceptObj()
{ return { get b() { throw"PASSED"; }, a: "PASSED" };
}
function partialEvalObj()
{ try
{
({a:a, b:b} = exceptObj()); throw"FAILED";
} catch (ex)
{ if (ex !== "PASSED") throw"bad exception thrown: " + ex;
}
}
var c = "FAILED", d = "FAILED", e = "PASSED", f = "PASSED";
function exceptArr()
{ return ["PASSED", {e: "PASSED", get f() { throw"PASSED"; }}, "FAILED"];
}
function partialEvalArr()
{ try
{
[c, {e: d, f: e}, f] = exceptArr(); throw"FAILED";
} catch (ex)
{ if (ex !== "PASSED") throw"bad exception thrown: " + ex;
}
}
var g = "FAILED", h = "FAILED", i = "FAILED", j = "FAILED", k = "FAILED"; var _g = "PASSED", _h = "FAILED", _i = "FAILED", _j = "FAILED", _k = "FAILED"; var order = [];
function partialEvalObj2()
{
({g: g, h: h, i: i, j: j, k: k} = objWithGetters());
}
try
{
partialEvalObj(); if (a !== "PASSED" || b !== "PASSED") throw"FAILED: lhs not mutated correctly during destructuring!\n" + "a == " + a + ", b == " + b;
partialEvalObj2(); if (g !== "PASSED" ||
h !== "PASSED" ||
i !== "PASSED" ||
j !== "PASSED" ||
k !== "PASSED") throw"FAILED: order of property accesses wrong!\n" + "order == " + order;
partialEvalArr(); if (c !== "PASSED" || d !== "PASSED" || e !== "PASSED") throw"FAILED: lhs not mutated correctly during destructuring!\n" + "c == " + c + ", d == " + d + ", e == " + e + ", f == " + f ;
} catch (ex)
{
failed = ex;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.