summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object')
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/browser.js0
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-return-undefined-throws.js47
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-returns-non-object.js42
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/regular-subclassing.js22
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/replacing-prototype.js23
-rw-r--r--js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/shell.js0
6 files changed, 134 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/browser.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/browser.js
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-return-undefined-throws.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-return-undefined-throws.js
new file mode 100644
index 0000000000..ddf4ec4795
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-return-undefined-throws.js
@@ -0,0 +1,47 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 9.2.2
+description: Throws a ReferenceError if constructor result is undefined
+info: |
+ 9.2.2 [[Construct]] ( argumentsList, newTarget)
+
+ ...
+ 11. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
+ ...
+ 13. If result.[[type]] is return, then
+ a. If Type(result.[[value]]) is Object, return
+ NormalCompletion(result.[[value]]).
+ ...
+ c. If result.[[value]] is not undefined, throw a TypeError exception.
+ ...
+ 15. Return envRec.GetThisBinding().
+
+ 8.1.1.3.4 GetThisBinding ()
+
+ ...
+ 3. If envRec.[[thisBindingStatus]] is "uninitialized", throw a ReferenceError
+ exception.
+ ...
+
+---*/
+
+class Obj extends Object {
+ constructor() {
+ return undefined;
+ }
+}
+
+class Obj2 extends Object {
+ constructor() {}
+}
+
+assert.throws(ReferenceError, function() {
+ new Obj();
+});
+
+assert.throws(ReferenceError, function() {
+ new Obj2();
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-returns-non-object.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-returns-non-object.js
new file mode 100644
index 0000000000..6f266cc1e7
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/constructor-returns-non-object.js
@@ -0,0 +1,42 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 9.2.2
+description: The Type of the return value must be an Object
+info: |
+ 9.2.2 [[Construct]] ( argumentsList, newTarget)
+
+ ...
+ 11. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
+ ...
+ 13. If result.[[type]] is return, then
+ a. If Type(result.[[value]]) is Object, return
+ NormalCompletion(result.[[value]]).
+ ...
+ c. If result.[[value]] is not undefined, throw a TypeError exception.
+ ...
+
+ 6.1.7.2 Object Internal Methods and Internal Slots
+
+ ...
+ If any specified use of an internal method of an exotic object is not
+ supported by an implementation, that usage must throw a TypeError exception
+ when attempted.
+
+ 6.1.7.3 Invariants of the Essential Internal Methods
+
+ [[Construct]] ( )
+ - The Type of the return value must be Object.
+---*/
+
+class Obj extends Object {
+ constructor() {
+ return 42;
+ }
+}
+
+assert.throws(TypeError, function() {
+ var obj = new Obj();
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/regular-subclassing.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/regular-subclassing.js
new file mode 100644
index 0000000000..59b6afd6a3
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/regular-subclassing.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.1.1
+description: Subclassing Object
+info: |
+ 19.1.1 The Object Constructor
+
+ The Object constructor is designed to be subclassable. It may be used as the
+ value of an extends clause of a class definition.
+---*/
+
+class Obj extends Object {}
+
+var obj = new Obj();
+
+assert.notSameValue(
+ Object.getPrototypeOf(obj), Object.prototype,
+ 'returns the class prototype'
+);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/replacing-prototype.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/replacing-prototype.js
new file mode 100644
index 0000000000..dd6e7d5635
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/replacing-prototype.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.1.1
+description: Subclassing Object replacing a prototype method
+info: |
+ 19.1.1 The Object Constructor
+
+ The Object constructor is designed to be subclassable. It may be used as the
+ value of an extends clause of a class definition.
+---*/
+
+class Obj extends Object {
+ valueOf() {
+ return 42;
+ }
+}
+
+var obj = new Obj();
+
+assert.sameValue(obj.valueOf(), 42, 'Replaces prototype');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/shell.js b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/subclass/builtin-objects/Object/shell.js