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()) |