diff options
Diffstat (limited to 'deps/v8/test/mjsunit/regress/regress-7791.js')
-rw-r--r-- | deps/v8/test/mjsunit/regress/regress-7791.js | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/regress/regress-7791.js b/deps/v8/test/mjsunit/regress/regress-7791.js new file mode 100644 index 0000000000..9b4d2c4f1a --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-7791.js @@ -0,0 +1,120 @@ +// 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()); +} |