| // Copyright 2015 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| "use strict"; |
| |
| function getTypeName(receiver) { |
| Error.prepareStackTrace = function(e, stack) { return stack; } |
| var stack = (function() { return new Error().stack; }).call(receiver); |
| Error.prepareStackTrace = undefined; |
| return stack[0].getTypeName(); |
| } |
| |
| assertNull(getTypeName(undefined)); |
| assertNull(getTypeName(null)); |
| assertEquals("Number", getTypeName(1)); |
| assertEquals("String", getTypeName("")); |
| assertEquals("Boolean", getTypeName(false)); |
| assertEquals("Object", getTypeName({})); |
| assertEquals("Array", getTypeName([])); |
| assertEquals("Proxy", getTypeName(new Proxy({},{}))); |
| assertEquals("Custom", getTypeName(new (function Custom(){})())); |