Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
var absent = {};
var getterValues = [absent, undefined, function(){}];
var setterValues = [absent, undefined, function(){}];
var configurableValues = [absent, true, false];
var enumerableValues = [absent, true, false];
function CreateDescriptor(getter, setter, enumerable, configurable) {
var descriptor = {};
if (getter !== absent)
descriptor.get = getter;
if (setter !== absent)
descriptor.set = setter;
if (configurable !== absent)
descriptor.configurable = configurable;
if (enumerable !== absent)
descriptor.enumerable = enumerable;
return descriptor;
}
getterValues.forEach(function(getter) {
setterValues.forEach(function(setter) {
enumerableValues.forEach(function(enumerable) {
configurableValues.forEach(function(configurable) {
var descriptor = CreateDescriptor(getter, setter, enumerable, configurable);
if (!("get" in descriptor || "set" in descriptor))
return;
assertThrowsInstanceOf(function() {
Object.defineProperty([], "length", descriptor);
}, TypeError);
});
});
});
});
if (typeof reportCompare === "function")
reportCompare(0, 0);