mirror of
https://github.com/tc39/test262.git
synced 2025-05-25 17:20:41 +02:00
WeakMap, WeakSet, WeakRef, and FinalizationRegistry all had tests verifying what would happen if they were called with a value that wasn't allowed as a weak value: before this proposal, that was a non-Object. Now, allowed weak values are Objects, well-known Symbols, and unregistered Symbols. That leaves registered Symbols that are still not allowed as weak values. This commit updates those tests to use a registered Symbol instead of an unregistered Symbol; they should still pass, regardless of whether the implementation has implemented symbols-as-weakmap-keys yet. The tests are renamed as appropriate. Also updates the frontmatter to the most current spec text, including the CanBeHeldWeakly abstract operation. See: #2850
51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
// Copyright (C) 2019 Leo Balter. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-weak-ref-target
|
|
description: >
|
|
Throws a TypeError if target cannot be held weakly
|
|
info: |
|
|
WeakRef ( _target_ )
|
|
2. If CanBeHeldWeakly(_target_) is *false*, throw a *TypeError* exception.
|
|
features: [WeakRef]
|
|
---*/
|
|
|
|
assert.sameValue(
|
|
typeof WeakRef, 'function',
|
|
'typeof WeakRef is function'
|
|
);
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef();
|
|
}, 'implicit undefined');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(undefined);
|
|
}, 'explicit undefined');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(null);
|
|
}, 'null');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(1);
|
|
}, 'number');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef('Object');
|
|
}, 'string');
|
|
|
|
var s = Symbol.for('registered symbol');
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(s);
|
|
}, 'registered symbol');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(true);
|
|
}, 'Boolean, true');
|
|
|
|
assert.throws(TypeError, function() {
|
|
new WeakRef(false);
|
|
}, 'Boolean, false');
|