redefine-length-accessor.js (1370B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 var absent = {}; 6 7 var getterValues = [absent, undefined, function(){}]; 8 var setterValues = [absent, undefined, function(){}]; 9 var configurableValues = [absent, true, false]; 10 var enumerableValues = [absent, true, false]; 11 12 function CreateDescriptor(getter, setter, enumerable, configurable) { 13 var descriptor = {}; 14 if (getter !== absent) 15 descriptor.get = getter; 16 if (setter !== absent) 17 descriptor.set = setter; 18 if (configurable !== absent) 19 descriptor.configurable = configurable; 20 if (enumerable !== absent) 21 descriptor.enumerable = enumerable; 22 return descriptor; 23 } 24 25 getterValues.forEach(function(getter) { 26 setterValues.forEach(function(setter) { 27 enumerableValues.forEach(function(enumerable) { 28 configurableValues.forEach(function(configurable) { 29 var descriptor = CreateDescriptor(getter, setter, enumerable, configurable); 30 if (!("get" in descriptor || "set" in descriptor)) 31 return; 32 33 assertThrowsInstanceOf(function() { 34 Object.defineProperty([], "length", descriptor); 35 }, TypeError); 36 }); 37 }); 38 }); 39 }); 40 41 if (typeof reportCompare === "function") 42 reportCompare(0, 0);