[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / duplicate-computed-accessors.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error(`bad value: ${String(actual)}`);
4 }
5
6 // Class methods.
7 (function () {
8     var method1 = 'taste';
9     var method2 = 'taste';
10
11     class Cocoa {
12         get [method1]() {
13             return 'awesome';
14         }
15
16         get [method2]() {
17             return 'great';
18         }
19     }
20
21     var cocoa = new Cocoa();
22     shouldBe(cocoa.taste, "great");
23 }());
24
25 (function () {
26     var counter = 0;
27     function method1() {
28         shouldBe(counter++, 0);
29         return 'taste';
30     }
31     function method2() {
32         shouldBe(counter++, 1);
33         return 'taste';
34     }
35
36     class Cocoa {
37         get [method1()]() {
38             return 'awesome';
39         }
40
41         get [method2()]() {
42             return 'great';
43         }
44     }
45
46     var cocoa = new Cocoa();
47     shouldBe(cocoa.taste, "great");
48 }());
49
50 (function () {
51     var counter = 0;
52     function method1() {
53         shouldBe(counter++, 0);
54         return 'taste';
55     }
56     function method2() {
57         shouldBe(counter++, 1);
58         return 'taste';
59     }
60
61     class Cocoa {
62         get [method1()]() {
63             return this.value;
64         }
65
66         set [method2()](value) {
67             this.value = value;
68         }
69     }
70
71     var cocoa = new Cocoa();
72     shouldBe(cocoa.taste, undefined);
73     cocoa.taste = 'great';
74     shouldBe(cocoa.taste, 'great');
75 }());
76
77 (function () {
78     var counter = 0;
79     function method1() {
80         shouldBe(counter++, 0);
81         return 'taste';
82     }
83     function method2() {
84         shouldBe(counter++, 1);
85         return 'taste';
86     }
87
88     class Cocoa {
89         get 'taste'() {
90             return 'bad';
91         }
92
93         get [method1()]() {
94             return this.value;
95         }
96
97         set [method2()](value) {
98             this.value = value;
99         }
100     }
101
102     var cocoa = new Cocoa();
103     shouldBe(cocoa.taste, undefined);
104     cocoa.taste = 'great';
105     shouldBe(cocoa.taste, 'great');
106 }());
107
108 (function () {
109     var counter = 0;
110     function method1() {
111         shouldBe(counter++, 0);
112         return 'taste';
113     }
114     function method2() {
115         shouldBe(counter++, 1);
116         return 'taste';
117     }
118
119     class Cocoa {
120         get [method1()]() {
121             return this.value;
122         }
123
124         set [method2()](value) {
125             this.value = value;
126         }
127
128         get 'taste'() {
129             return 'awesome';
130         }
131
132         set taste(value) {
133         }
134     }
135
136     var cocoa = new Cocoa();
137     shouldBe(cocoa.taste, 'awesome');
138     cocoa.taste = 'great';
139     shouldBe(cocoa.taste, 'awesome');
140 }());
141
142 // Class static methods.
143 (function () {
144     var method1 = 'taste';
145     var method2 = 'taste';
146
147     class Cocoa {
148         static get [method1]() {
149             return 'awesome';
150         }
151
152         static get [method2]() {
153             return 'great';
154         }
155     }
156
157     shouldBe(Cocoa.taste, "great");
158 }());
159
160 (function () {
161     var counter = 0;
162     function method1() {
163         shouldBe(counter++, 0);
164         return 'taste';
165     }
166     function method2() {
167         shouldBe(counter++, 1);
168         return 'taste';
169     }
170
171     class Cocoa {
172         static get [method1()]() {
173             return 'awesome';
174         }
175
176         static get [method2()]() {
177             return 'great';
178         }
179     }
180
181     shouldBe(Cocoa.taste, "great");
182 }());
183
184 (function () {
185     var counter = 0;
186     function method1() {
187         shouldBe(counter++, 0);
188         return 'taste';
189     }
190     function method2() {
191         shouldBe(counter++, 1);
192         return 'taste';
193     }
194
195     class Cocoa {
196         static get [method1()]() {
197             return this.value;
198         }
199
200         static set [method2()](value) {
201             this.value = value;
202         }
203     }
204
205     shouldBe(Cocoa.taste, undefined);
206     Cocoa.taste = 'great';
207     shouldBe(Cocoa.taste, 'great');
208 }());
209
210 (function () {
211     var counter = 0;
212     function method1() {
213         shouldBe(counter++, 0);
214         return 'taste';
215     }
216     function method2() {
217         shouldBe(counter++, 1);
218         return 'taste';
219     }
220
221     class Cocoa {
222         static get 'taste'() {
223             return 'bad';
224         }
225
226         static get [method1()]() {
227             return this.value;
228         }
229
230         static set [method2()](value) {
231             this.value = value;
232         }
233     }
234
235     shouldBe(Cocoa.taste, undefined);
236     Cocoa.taste = 'great';
237     shouldBe(Cocoa.taste, 'great');
238 }());
239
240 (function () {
241     var counter = 0;
242     function method1() {
243         shouldBe(counter++, 0);
244         return 'taste';
245     }
246     function method2() {
247         shouldBe(counter++, 1);
248         return 'taste';
249     }
250
251     class Cocoa {
252         static get [method1()]() {
253             return this.value;
254         }
255
256         static set [method2()](value) {
257             this.value = value;
258         }
259
260         static get 'taste'() {
261             return 'awesome';
262         }
263
264         static set taste(value) {
265         }
266     }
267
268     shouldBe(Cocoa.taste, 'awesome');
269     Cocoa.taste = 'great';
270     shouldBe(Cocoa.taste, 'awesome');
271 }());
272
273 // Object.
274 (function () {
275     var method1 = 'taste';
276     var method2 = 'taste';
277
278     let Cocoa = {
279         get [method1]() {
280             return 'awesome';
281         },
282
283         get [method2]() {
284             return 'great';
285         }
286     }
287
288     shouldBe(Cocoa.taste, "great");
289 }());
290
291 (function () {
292     var counter = 0;
293     function method1() {
294         shouldBe(counter++, 0);
295         return 'taste';
296     }
297     function method2() {
298         shouldBe(counter++, 1);
299         return 'taste';
300     }
301
302     let Cocoa = {
303         get [method1()]() {
304             return 'awesome';
305         },
306
307         get [method2()]() {
308             return 'great';
309         }
310     }
311
312     shouldBe(Cocoa.taste, "great");
313 }());
314
315 (function () {
316     var counter = 0;
317     function method1() {
318         shouldBe(counter++, 0);
319         return 'taste';
320     }
321     function method2() {
322         shouldBe(counter++, 1);
323         return 'taste';
324     }
325
326     let Cocoa = {
327         get [method1()]() {
328             return this.value;
329         },
330
331         set [method2()](value) {
332             this.value = value;
333         }
334     }
335
336     shouldBe(Cocoa.taste, undefined);
337     Cocoa.taste = 'great';
338     shouldBe(Cocoa.taste, 'great');
339 }());
340
341 (function () {
342     var counter = 0;
343     function method1() {
344         shouldBe(counter++, 0);
345         return 'taste';
346     }
347     function method2() {
348         shouldBe(counter++, 1);
349         return 'taste';
350     }
351
352     let Cocoa = {
353         get 'taste'() {
354             return 'bad';
355         },
356
357         get [method1()]() {
358             return this.value;
359         },
360
361         set [method2()](value) {
362             this.value = value;
363         }
364     }
365
366     shouldBe(Cocoa.taste, undefined);
367     Cocoa.taste = 'great';
368     shouldBe(Cocoa.taste, 'great');
369 }());
370
371 (function () {
372     var counter = 0;
373     function method1() {
374         shouldBe(counter++, 0);
375         return 'taste';
376     }
377     function method2() {
378         shouldBe(counter++, 1);
379         return 'taste';
380     }
381
382     let Cocoa = {
383         get [method1()]() {
384             return this.value;
385         },
386
387         set [method2()](value) {
388             this.value = value;
389         },
390
391         get 'taste'() {
392             return 'awesome';
393         },
394
395         set taste(value) {
396         }
397     }
398
399     shouldBe(Cocoa.taste, 'awesome');
400     Cocoa.taste = 'great';
401     shouldBe(Cocoa.taste, 'awesome');
402 }());