v8/test/mjsunit/harmony/symbol-description.js
Mathias Bynens 3b4cadedee Remove always-true --harmony-symbol-description runtime flag
It shipped in Chrome 70.

Bug: v8:7807, v8:8562
Change-Id: I5c5a9fc23656018ee6e9115af7a0c779230e681b
Reviewed-on: https://chromium-review.googlesource.com/c/1450787
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59589}
2019-02-14 10:36:05 +00:00

52 lines
1.3 KiB
JavaScript

// 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);
}