| Index: test/mjsunit/regress/regress-2594.js
|
| diff --git a/test/intl/date-format/default-locale.js b/test/mjsunit/regress/regress-2594.js
|
| similarity index 52%
|
| copy from test/intl/date-format/default-locale.js
|
| copy to test/mjsunit/regress/regress-2594.js
|
| index 8e9b7fcec3e16e0bc4a6ce18d1584d0664f3f02e..60720cb8048a67883d5eeddb21f8a4846aee9d53 100644
|
| --- a/test/intl/date-format/default-locale.js
|
| +++ b/test/mjsunit/regress/regress-2594.js
|
| @@ -25,20 +25,80 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Constructing DateTimeFormat with no locale arguments or with []
|
| -// creates one with default locale.
|
| +// In the assertions but the first, the ES5 spec actually requires 0, but
|
| +// that is arguably a spec bug, and other browsers return 1 like us.
|
| +// In ES6, all of those will presumably result in a ReferenceError.
|
| +// Our main concern with this test is that we do not crash, though.
|
|
|
| -var dtf = new Intl.DateTimeFormat([]);
|
| +function f1() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + eval("var h = function() { return XXX }")
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f1())
|
|
|
| -var options = dtf.resolvedOptions();
|
| +function f2() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + eval("function h(){ return XXX }")
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f2())
|
|
|
| -// Check it's none of these first.
|
| -assertFalse(options.locale === 'und');
|
| -assertFalse(options.locale === '');
|
| -assertFalse(options.locale === undefined);
|
| +function f3() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + try { throw 2 } catch (y) {
|
| + eval("function h(){ return XXX }")
|
| + }
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f3())
|
|
|
| -// Then check for equality.
|
| -assertEquals(options.locale, %GetDefaultICULocale());
|
| +function f4() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + with ({}) {
|
| + eval("function h(){ return XXX }")
|
| + }
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f4())
|
|
|
| -var dtfNone = new Intl.DateTimeFormat();
|
| -assertEquals(options.locale, dtfNone.resolvedOptions().locale);
|
| +function f5() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + eval('eval("function h(){ return XXX }")')
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f5())
|
| +
|
| +function f6() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + eval("var h = (function() { function g(){ return XXX } return g })()")
|
| + }
|
| + return h()
|
| +}
|
| +assertEquals(1, f6())
|
| +
|
| +function f7() {
|
| + var XXX = 0
|
| + try { throw 1 } catch (XXX) {
|
| + eval("function h() { var XXX=2; function g(){ return XXX } return g }")
|
| + }
|
| + return h()()
|
| +}
|
| +assertEquals(2, f7()) // !
|
| +
|
| +var XXX = 0
|
| +try { throw 1 } catch (XXX) {
|
| + eval("function h(){ return XXX }")
|
| +}
|
| +assertEquals(1, h())
|
|
|