valuetosource.js (1327B)
1 // |jit-test| --disable-tosource 2 3 const TEST_CASES = [ 4 [`undefined`, "(void 0)"], 5 [`null`, "null"], 6 [`true`, "true"], 7 [`Symbol("abc")`, `Symbol("abc")`], 8 [`15`, "15"], 9 [`-0`, "-0"], 10 [`"abc"`, `"abc"`], 11 [`(function a() { return 1; })`, `(function a() { return 1; })`], 12 [`[1, 2, 3]`, `[1, 2, 3]`], 13 [`[1, {a: 0, b: 0}, 2]`, `[1, {a:0, b:0}, 2]`], 14 [`({a: [1, 2, 3]})`, `({a:[1, 2, 3]})`], 15 [`new Error("msg", "file", 1)`, `(new Error("msg", "file", 1))`], 16 [`new TypeError("msg", "file", 1)`, `(new TypeError("msg", "file", 1))`], 17 [`new class X extends Error { 18 constructor() { 19 super("msg", "file", 1); 20 this.name = "X"; 21 } 22 }`, `(new X("msg", "file", 1))`], 23 [`/a(b)c/`, `/a(b)c/`], 24 [`/abc/gi`, `/abc/gi`], 25 [`new Boolean(false)`, `new Boolean(false)`], 26 [`Object(false)`, `new Boolean(false)`], 27 [`new String("abc")`, `new String("abc")`], 28 [`Object("abc")`, `new String("abc")`], 29 [`new Number(42)`, `new Number(42)`], 30 [`Object(42)`, `new Number(42)`], 31 [`new Date(1579447335)`, `new Date(1579447335)`], 32 ] 33 34 let g = newGlobal({newCompartment: true}); 35 for (let [actual, expected] of TEST_CASES) { 36 assertEq(valueToSource(eval(actual)), expected); 37 assertEq(valueToSource(g.eval(actual)), expected); 38 }