121 lines
2.2 KiB
JavaScript
121 lines
2.2 KiB
JavaScript
|
// 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.
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
|
||
|
// Data property last.
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
get foo() { return 666 },
|
||
|
foo: 42,
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
set foo(_) { },
|
||
|
foo: 42,
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
get foo() { return 666 },
|
||
|
set foo(_) { },
|
||
|
foo: 42,
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
get foo() { return 666 },
|
||
|
set ['foo'.slice()](_) { },
|
||
|
foo: 42,
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
get ['foo'.slice()]() { return 666 },
|
||
|
set ['foo'.slice()](_) { },
|
||
|
foo: 42,
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
|
||
|
// Data property first.
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
foo: 666,
|
||
|
get foo() { return 42 },
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get());
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
foo: 666,
|
||
|
set foo(_) { },
|
||
|
};
|
||
|
assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').get);
|
||
|
assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').value);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
foo: 666,
|
||
|
get foo() { return 42 },
|
||
|
set foo(_) { },
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get());
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
foo: 666,
|
||
|
get ['foo'.slice()]() { return 42 },
|
||
|
set foo(_) { },
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get());
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
foo: 666,
|
||
|
get ['foo'.slice()]() { return 42 },
|
||
|
set ['foo'](_) { },
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get());
|
||
|
}
|
||
|
|
||
|
|
||
|
// Data property in the middle.
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
get foo() { return 42 },
|
||
|
foo: 666,
|
||
|
set foo(_) { },
|
||
|
};
|
||
|
assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').get);
|
||
|
assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').set());
|
||
|
}
|
||
|
|
||
|
{
|
||
|
const o = {
|
||
|
set foo(_) { },
|
||
|
foo: 666,
|
||
|
get foo() { return 42 },
|
||
|
};
|
||
|
assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get());
|
||
|
}
|