Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testStringLengthNoTinyId.js
1 // Second testPropagatedFunArgs test -- this is a crash-test.
2 (function () {
3   var escapee;
4
5   function testPropagatedFunArgs()
6   {
7     const magic = 42;
8
9     var win = this;
10     var res = [], q = [];
11     function addEventListener(name, func, flag) {
12       q.push(func);
13     }
14
15     var pageInfo = "pageInfo", obs;
16     addEventListener("load", handleLoad, true);
17
18     var observer = {
19       observe: function(win, topic, data) {
20         // obs.removeObserver(observer, "page-info-dialog-loaded");
21         handlePageInfo();
22       }
23     };
24
25     function handleLoad() {
26       //pageInfo = { toString: function() { return "pageInfo"; } };
27       obs = { addObserver: function (obs, topic, data) { obs.observe(win, topic, data); } };
28       obs.addObserver(observer, "page-info-dialog-loaded", false);
29     }
30
31     function handlePageInfo() {
32       res.push(pageInfo);
33       function $(aId) {
34         function notSafe() {
35           return magic;
36         }
37         notSafe();
38         res.push(pageInfo);
39       };
40       var feedTab = $("feedTab");
41     }
42
43     escapee = q[0];
44     return res.join(',');
45   }
46
47   testPropagatedFunArgs();
48
49   escapee();
50 })();
51
52 function testStringLengthNoTinyId()
53 {
54   var x = "unset";
55   var t = new String("");
56   for (var i = 0; i < 5; i++)
57     x = t["-1"];
58
59   var r = "t['-1'] is " + x;
60   t["-1"] = "foo";
61   r += " when unset, '" + t["-1"] + "' when set";
62   return r;
63 }
64 assertEq(testStringLengthNoTinyId(), "t['-1'] is undefined when unset, 'foo' when set");