// 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. function f() { return 42; } const bound_function = f.bind(); const callable_proxy = new Proxy(function(){}.__proto__, {}); function testSet(ctor) { new ctor([]); new ctor([{},{}]); } function testMap(ctor) { new ctor([]); new ctor([[{},{}],[{},{}]]); } function testAllVariants(set_or_add_function) { Set.prototype.add = set_or_add_function; testSet(Set); WeakSet.prototype.add = set_or_add_function; testSet(WeakSet); Map.prototype.set = set_or_add_function; testMap(Map); WeakMap.prototype.set = set_or_add_function; testMap(WeakMap); } testAllVariants(bound_function); testAllVariants(callable_proxy);