Skip to content

Commit

Permalink
Support passing a descriptor to various utils.
Browse files Browse the repository at this point in the history
  • Loading branch information
jdalton committed Sep 4, 2018
1 parent 1bcc936 commit 6ce0385
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 8 deletions.
9 changes: 7 additions & 2 deletions src/util/get-getter.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ function init() {
const { __lookupGetter__ } = Object.prototype

function getGetter(object, name) {
if (! shared.support.lookupShadowed) {
const descriptor = Reflect.getOwnPropertyDescriptor(object, name)
const useAsDescriptor = name === void 0

if (useAsDescriptor ||
! shared.support.lookupShadowed) {
const descriptor = useAsDescriptor
? object
: Reflect.getOwnPropertyDescriptor(object, name)

if (! descriptor ||
! descriptor.get) {
Expand Down
9 changes: 7 additions & 2 deletions src/util/get-setter.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ function init() {
const { __lookupSetter__ } = Object.prototype

function getSetter(object, name) {
if (! shared.support.lookupShadowed) {
const descriptor = Reflect.getOwnPropertyDescriptor(object, name)
const useAsDescriptor = name === void 0

if (useAsDescriptor ||
! shared.support.lookupShadowed) {
const descriptor = useAsDescriptor
? object
: Reflect.getOwnPropertyDescriptor(object, name)

if (! descriptor ||
! descriptor.set) {
Expand Down
11 changes: 9 additions & 2 deletions src/util/is-data-property.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ import shared from "../shared.js"

function init() {
function isDataProperty(object, name) {
return isObjectLike(object) &&
isDataPropertyDescriptor(Reflect.getOwnPropertyDescriptor(object, name))
if (! isObjectLike(object)) {
return false
}

const descriptor = name === void 0
? object
: Reflect.getOwnPropertyDescriptor(object, name)

return isDataPropertyDescriptor(descriptor)
}

return isDataProperty
Expand Down
4 changes: 3 additions & 1 deletion src/util/is-updatable-get.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import shared from "../shared.js"

function init() {
function isUpdatableGet(object, name) {
const descriptor = Reflect.getOwnPropertyDescriptor(object, name)
const descriptor = name === void 0
? object
: Reflect.getOwnPropertyDescriptor(object, name)

if (descriptor) {
// Section 9.5.8: [[Get]]()
Expand Down
4 changes: 3 additions & 1 deletion src/util/is-updatable-set.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import shared from "../shared.js"

function init() {
function isUpdatableSet(object, name) {
const descriptor = Reflect.getOwnPropertyDescriptor(object, name)
const descriptor = name === void 0
? object
: Reflect.getOwnPropertyDescriptor(object, name)

if (descriptor) {
// Section 9.5.9: [[Set]]()
Expand Down

0 comments on commit 6ce0385

Please sign in to comment.