js/src/tests/js1_5/Regress/regress-321874.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:7ed84934664e
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 //-----------------------------------------------------------------------------
7 var BUGNUMBER = 321874;
8 var summary = 'lhs must be a reference in (for lhs in rhs) ...';
9 var actual = '';
10 var expect = '';
11 var section;
12
13 printBugNumber(BUGNUMBER);
14 printStatus (summary);
15
16 function a() {}
17 var b = {foo: 'bar'};
18
19 printStatus('for-in tests');
20
21 var v;
22 section = summary + ': for((v) in b);';
23 expect = 'foo';
24 printStatus(section);
25 try
26 {
27 eval('for ((v) in b);');
28 actual = v;
29 }
30 catch(ex)
31 {
32 printStatus(ex+'');
33 actual = 'error';
34 }
35 reportCompare(expect, actual, section);
36
37 section = summary + ': function foo(){for((v) in b);};foo();';
38 expect = 'foo';
39 printStatus(section);
40 try
41 {
42 eval('function foo(){ for ((v) in b);}; foo();');
43 actual = v;
44 }
45 catch(ex)
46 {
47 printStatus(ex+'');
48 actual = 'error';
49 }
50 reportCompare(expect, actual, section);
51
52 section = summary + ': for(a() in b);';
53 expect = 'error';
54 printStatus(section);
55 try
56 {
57 eval('for (a() in b);');
58 actual = 'no error';
59 }
60 catch(ex)
61 {
62 printStatus(ex+'');
63 actual = 'error';
64 }
65 reportCompare(expect, actual, section);
66
67 section = summary + ': function foo(){for(a() in b);};foo();';
68 expect = 'error';
69 printStatus(section);
70 try
71 {
72 eval('function foo(){ for (a() in b);};foo();');
73 actual = 'no error';
74 }
75 catch(ex)
76 {
77 printStatus(ex+'');
78 actual = 'error';
79 }
80 reportCompare(expect, actual, section);
81
82 section = ': for(new a() in b);';
83 expect = 'error';
84 printStatus(section);
85 try
86 {
87 eval('for (new a() in b);');
88 actual = 'no error';
89 }
90 catch(ex)
91 {
92 printStatus(ex+'');
93 actual = 'error';
94 }
95 reportCompare(expect, actual, summary + section);
96
97 section = ': function foo(){for(new a() in b);};foo();';
98 expect = 'error';
99 printStatus(section);
100 try
101 {
102 eval('function foo(){ for (new a() in b);};foo();');
103 actual = 'no error';
104 }
105 catch(ex)
106 {
107 printStatus(ex+'');
108 actual = 'error';
109 }
110 reportCompare(expect, actual, summary + section);
111
112 section = ': for(void in b);';
113 expect = 'error';
114 printStatus(section);
115 try
116 {
117 eval('for (void in b);');
118 actual = 'no error';
119 }
120 catch(ex)
121 {
122 printStatus(ex+'');
123 actual = 'error';
124 }
125 reportCompare(expect, actual, summary + section);
126
127 section = ': function foo(){for(void in b);};foo();';
128 expect = 'error';
129 printStatus(section);
130 try
131 {
132 eval('function foo(){ for (void in b);};foo();');
133 actual = 'no error';
134 }
135 catch(ex)
136 {
137 printStatus(ex+'');
138 actual = 'error';
139 }
140 reportCompare(expect, actual, summary + section);
141
142 var d = 1;
143 var e = 2;
144 expect = 'error';
145 section = ': for((d*e) in b);';
146 printStatus(section);
147 try
148 {
149 eval('for ((d*e) in b);');
150 actual = 'no error';
151 }
152 catch(ex)
153 {
154 printStatus(ex+'');
155 actual = 'error';
156 }
157 reportCompare(expect, actual, summary + section);
158
159 var d = 1;
160 var e = 2;
161 expect = 'error';
162 section = ': function foo(){for((d*e) in b);};foo();';
163 printStatus(section);
164 try
165 {
166 eval('function foo(){ for ((d*e) in b);};foo();');
167 actual = 'no error';
168 }
169 catch(ex)
170 {
171 printStatus(ex+'');
172 actual = 'error';
173 }
174 reportCompare(expect, actual, summary + section);
175
176 const c = 0;
177 expect = 0;
178 section = ': for(c in b);';
179 printStatus(section);
180 try
181 {
182 eval('for (c in b);');
183 actual = c;
184 printStatus('typeof c: ' + (typeof c) + ', c: ' + c);
185 }
186 catch(ex)
187 {
188 printStatus(ex+'');
189 actual = 'error';
190 }
191 reportCompare(expect, actual, summary + section);
192
193 expect = 0;
194 section = ': function foo(){for(c in b);};foo();';
195 printStatus(section);
196 try
197 {
198 eval('function foo(){ for (c in b);};foo();');
199 actual = c;
200 printStatus('typeof c: ' + (typeof c) + ', c: ' + c);
201 }
202 catch(ex)
203 {
204 printStatus(ex+'');
205 actual = 'error';
206 }
207 reportCompare(expect, actual, summary + section);

mercurial