1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Flags: --allow-natives-syntax 6 7 assertEquals("1", %ToName(1)); 8 assertEquals("1", %_ToName(1)); 9 10 assertEquals("0.5", %ToName(.5)); 11 assertEquals("0.5", %_ToName(.5)); 12 13 assertEquals("null", %ToName(null)); 14 assertEquals("null", %_ToName(null)); 15 16 assertEquals("true", %ToName(true)); 17 assertEquals("true", %_ToName(true)); 18 19 assertEquals("false", %ToName(false)); 20 assertEquals("false", %_ToName(false)); 21 22 assertEquals("undefined", %ToName(undefined)); 23 assertEquals("undefined", %_ToName(undefined)); 24 25 assertEquals("random text", %ToName("random text")); 26 assertEquals("random text", %_ToName("random text")); 27 28 assertEquals(Symbol.toPrimitive, %ToName(Symbol.toPrimitive)); 29 assertEquals(Symbol.toPrimitive, %_ToName(Symbol.toPrimitive)); 30 31 var a = { toString: function() { return "xyz" }}; 32 assertEquals("xyz", %ToName(a)); 33 assertEquals("xyz", %_ToName(a)); 34 35 var b = { valueOf: function() { return 42 }}; 36 assertEquals("[object Object]", %ToName(b)); 37 assertEquals("[object Object]", %_ToName(b)); 38 39 var c = { 40 toString: function() { return "x"}, 41 valueOf: function() { return 123 } 42 }; 43 assertEquals("x", %ToName(c)); 44 assertEquals("x", %_ToName(c)); 45 46 var d = { 47 [Symbol.toPrimitive]: function(hint) { return hint } 48 }; 49 assertEquals("string", %ToName(d)); 50 assertEquals("string", %_ToName(d)); 51 52 var e = new Date(0); 53 assertEquals(e.toString(), %ToName(e)); 54 assertEquals(e.toString(), %_ToName(e)); 55