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