summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js')
-rw-r--r--deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js b/deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js
new file mode 100644
index 0000000000..1dc874ed83
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/weakrefs/symbol-as-weakref-target.js
@@ -0,0 +1,41 @@
+// Copyright 2022 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.
+
+// Flags: --harmony-symbol-as-weakmap-key
+
+(function TestRegisterWithSymbolTarget() {
+ const fg = new FinalizationRegistry(() => { });
+ fg.register(Symbol('123'), 'holdings');
+ // Registered symbols cannot be the target.
+ assertThrows(() => fg.register(Symbol.for('123'), 'holdings'), TypeError);
+})();
+
+(function TestRegisterWithSymbolUnregisterToken() {
+ const fg = new FinalizationRegistry(() => { });
+ fg.register({}, 'holdings', Symbol('123'));
+ // Registered symbols cannot be the unregister token.
+ assertThrows(() => fg.register({}, 'holdings', Symbol.for('123')), TypeError);
+})();
+
+(function TestRegisterSymbolAndHoldingsSameValue() {
+ const fg = new FinalizationRegistry(() => {});
+ const obj = Symbol('123');
+ // SameValue(target, holdings) not ok.
+ assertThrows(() => fg.register(obj, obj), TypeError);
+ const holdings = {a: 1};
+ fg.register(obj, holdings);
+})();
+
+(function TestUnregisterWithSymbolUnregisterToken() {
+ const fg = new FinalizationRegistry(() => {});
+ fg.unregister(Symbol('123'));
+ // Registered symbols cannot be the unregister token.
+ assertThrows(() => fg.unregister(Symbol.for('123')), TypeError);
+})();
+
+(function TestWeakRefConstructorWithSymbol() {
+ new WeakRef(Symbol('123'));
+ // Registered symbols cannot be the WeakRef target.
+ assertThrows(() => new WeakRef(Symbol.for('123')), TypeError);
+})();