Bug 470455 - test_database_sync_embed_visits.js leaks, r=sdwilsh
[wine-gecko.git] / js / tests / js1_7 / lexical / regress-346642-03.js
blob3c054f2bf2ec5f1943c9bf775b1047f5ec3a8421
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is JavaScript Engine testing utilities.
16  *
17  * The Initial Developer of the Original Code is
18  * Mozilla Foundation.
19  * Portions created by the Initial Developer are Copyright (C) 2006
20  * the Initial Developer. All Rights Reserved.
21  *
22  * Contributor(s): Jesse Ruderman
23  *                 Brendan Eich
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
39 var gTestfile = 'regress-346642-03.js';
40 //-----------------------------------------------------------------------------
41 var BUGNUMBER = 346642;
42 var summary = 'decompilation of destructuring assignment';
43 var actual = '';
44 var expect = '';
47 //-----------------------------------------------------------------------------
48 test();
49 //-----------------------------------------------------------------------------
51 function test()
53   enterFunc ('test');
54   printBugNumber(BUGNUMBER);
55   printStatus (summary);
57   expect = 'TypeError: NaN is not a constructor';
58   actual = 'No Crash';
59   try
60   {
61     try { throw 1; } catch(e1 if 0) { } catch(e2 if (new NaN)) { }
62   }
63   catch(ex)
64   {
65     actual = ex + '';
66   }
67   reportCompare(expect, actual, summary + ': 1');
69   expect = /TypeError: x.t (has no properties|is undefined)/;
70   actual = 'No Crash';
71   try
72   {
73     z = [1];
74     let (x = (undefined ? 3 : z)) { x.t.g }
75   }
76   catch(ex)
77   {
78     actual = ex + '';
79   }
80   reportMatch(expect, actual, summary + ': 2');
82   expect = /TypeError: x.t (has no properties|is undefined)/;
83   actual = 'No Crash';
84   try
85   {
86     z = [1];
87     new Function("let (x = (undefined ? 3 : z)) { x.t.g }")()
88       }
89   catch(ex)
90   {
91     actual = ex + '';
92   }
93   reportMatch(expect, actual, summary + ': 3');
95   expect = 'TypeError: b is not a constructor';
96   actual = 'No Crash';
97   try
98   {
99     with({x: (new (b = 1))}) (2).x
100       }
101   catch(ex)
102   {
103     actual = ex + '';
104   }
105   reportCompare(expect, actual, summary + ': 4');
107   expect = /TypeError: this.zzz (has no properties|is undefined)/;
108   actual = 'No Crash';
109   try
110   {
111     (function(){try { } catch(f) { return; } finally { this.zzz.zzz }})();
112   }
113   catch(ex)
114   {
115     actual = ex + '';
116   }
117   reportMatch(expect, actual, summary + ': 5');
119   expect = 'TypeError: p.z = <x><y/></x> ? 3 : 4 is not a function';
120   actual = 'No Crash';
121   try
122   {
123     (new Function("if(\n({y:5, p: (print).r})) { p={}; (p.z = <x\n><y/></x> ? 3 : 4)(5) }"))();
124   }
125   catch(ex)
126   {
127     actual = ex + '';
128   }
129   reportCompare(expect, actual, summary + ': 6');
131   expect = 'TypeError: xx is not a function';
132   actual = 'No Crash';
133   try
134   {
135     switch(xx) { case 3: case (new ([3].map)): } const xx;
136   }
137   catch(ex)
138   {
139     actual = ex + '';
140   }
141   reportCompare(expect, actual, summary + ': 7');
143   expect = 'TypeError: ++x is not a function';
144   actual = 'No Crash';
145   try
146   {
147     let (x=3) ((++x)())
148       }
149   catch(ex)
150   {
151     actual = ex + '';
152   }
153   reportCompare(expect, actual, summary + ': 8');
155   expect = 'ReferenceError: x.y is not defined';
156   actual = 'No Crash';
157   try
158   {
159     x = {};
160     import x.y;
161   }
162   catch(ex)
163   {
164     actual = ex + '';
165   }
166   reportCompare(expect, actual, summary + ': 9');
168   exitFunc ('test');