| // Copyright 2018 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. |
| |
| { |
| let desc = Object.getOwnPropertyDescriptor(Symbol.prototype, 'description'); |
| assertEquals(desc.set, undefined); |
| assertEquals(desc.writable, undefined); |
| assertFalse(desc.enumerable); |
| assertTrue(desc.configurable); |
| } |
| |
| { |
| const empty = Symbol(); |
| assertEquals(empty.description, undefined); |
| |
| const symbol = Symbol('test'); |
| assertEquals(symbol.description, 'test'); |
| assertFalse(symbol.hasOwnProperty('description')); |
| } |
| |
| { |
| const empty = Object(Symbol()); |
| assertEquals(empty.description, undefined); |
| |
| const symbol = Object(Symbol('test')); |
| assertEquals(symbol.description, 'test'); |
| assertFalse(symbol.hasOwnProperty('description')); |
| } |
| |
| { |
| assertThrows(function() { |
| const proxy = new Proxy({}, {}); |
| Symbol.prototype.description.call(proxy); |
| }, TypeError); |
| |
| assertThrows(function() { |
| const smi = 123; |
| Symbol.prototype.description.call(smi); |
| }, TypeError); |
| |
| assertThrows(function() { |
| const str = 'string'; |
| Symbol.prototype.description.call(string); |
| }, TypeError); |
| |
| assertThrows(function() { |
| const obj = { prop: 'test' }; |
| Symbol.prototype.description.call(obj); |
| }, TypeError); |
| } |