summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/regress/regress-7791.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/regress/regress-7791.js')
-rw-r--r--deps/v8/test/mjsunit/regress/regress-7791.js120
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());
+}