function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } { let name = 'prototype'; let object = { prototype() { }, get [name]() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, 'prototype')), `{"enumerable":true,"configurable":true}`); } { let name = 'prototype'; let object = { get [name]() { }, prototype() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, 'prototype')), `{"writable":true,"enumerable":true,"configurable":true}`); } { let name = 'prototype'; let object = { [name]() { }, get prototype() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, 'prototype')), `{"enumerable":true,"configurable":true}`); } { let name = 'prototype'; let object = { get prototype() { }, [name]() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, 'prototype')), `{"writable":true,"enumerable":true,"configurable":true}`); } { let object = { __proto__() { } }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '__proto__')), `{"writable":true,"enumerable":true,"configurable":true}`); shouldBe(Object.getPrototypeOf(object), Object.prototype); } { let name = '__proto__'; let object = { [name]() { } }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '__proto__')), `{"writable":true,"enumerable":true,"configurable":true}`); shouldBe(Object.getPrototypeOf(object), Object.prototype); } { let name = '42'; let object = { 42() { }, get [name]() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '42')), `{"enumerable":true,"configurable":true}`); } { let name = '42'; let object = { get [name]() { }, 42() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '42')), `{"writable":true,"enumerable":true,"configurable":true}`); } { let name = '42'; let object = { [name]() { }, get 42() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '42')), `{"enumerable":true,"configurable":true}`); } { let name = '42'; let object = { get 42() { }, [name]() { }, }; shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, '42')), `{"writable":true,"enumerable":true,"configurable":true}`); }