[DFG] DFG should handle String#toString
[WebKit-https.git] / JSTests / stress / string-to-string-error.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error('bad value: ' + actual);
4 }
5
6 function shouldThrow(func, errorMessage) {
7     var errorThrown = false;
8     var error = null;
9     try {
10         func();
11     } catch (e) {
12         errorThrown = true;
13         error = e;
14     }
15     if (!errorThrown)
16         throw new Error('not thrown');
17     if (String(error) !== errorMessage)
18         throw new Error(`bad error: ${String(error)}`);
19 }
20
21 var toString = String.prototype.toString;
22 function test(string)
23 {
24     return toString.call(string);
25 }
26 noInline(test);
27
28 var object = {};
29 var symbol = Symbol("Cocoa");
30 for (var i = 0; i < 3e3; ++i) {
31     shouldThrow(() => test(object), `TypeError: Type error`);
32     shouldThrow(() => test(false), `TypeError: Type error`);
33     shouldThrow(() => test(true), `TypeError: Type error`);
34     shouldThrow(() => test(42), `TypeError: Type error`);
35     shouldThrow(() => test(null), `TypeError: Type error`);
36     shouldThrow(() => test(undefined), `TypeError: Type error`);
37     shouldThrow(() => test(symbol), `TypeError: Type error`);
38 }
39
40 var string = "Hello";
41 var stringObject = new String(string);
42 for (var i = 0; i < 1e2; ++i) {
43     shouldBe(test(string), string);
44     shouldBe(test(stringObject), string);
45 }