summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js')
-rw-r--r--js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js b/js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js
new file mode 100644
index 0000000000..f01bb2a643
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/definition/methods-restricted-properties.js
@@ -0,0 +1,106 @@
+// Copyright (C) 2015 Caitlin Potter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+ Functions created using MethodDefinition syntactic form do not have own
+ properties "caller" or "arguments", but inherit them from
+ %FunctionPrototype%.
+es6id: 16.1
+---*/
+
+class Class {
+ method() {}
+ get accessor() {}
+ set accessor(x) {}
+};
+
+var instance = new Class;
+var accessor = Object.getOwnPropertyDescriptor(Class.prototype, "accessor");
+
+assert.sameValue(
+ instance.method.hasOwnProperty('caller'),
+ false,
+ 'No "caller" own property (method)'
+);
+assert.sameValue(
+ instance.method.hasOwnProperty('arguments'),
+ false,
+ 'No "arguments" own property (method)'
+);
+assert.sameValue(
+ accessor.get.hasOwnProperty('caller'),
+ false,
+ 'No "caller" own property ("get" accessor)'
+);
+assert.sameValue(
+ accessor.get.hasOwnProperty('arguments'),
+ false,
+ 'No "arguments" own property ("get" accessor)'
+);
+assert.sameValue(
+ accessor.set.hasOwnProperty('caller'),
+ false,
+ 'No "caller" own property ("set" accessor)'
+);
+assert.sameValue(
+ accessor.set.hasOwnProperty('arguments'),
+ false,
+ 'No "arguments" own property ("set" accessor)'
+);
+
+// --- Test method restricted properties throw
+
+assert.throws(TypeError, function() {
+ return instance.method.caller;
+});
+
+assert.throws(TypeError, function() {
+ instance.method.caller = {};
+});
+
+assert.throws(TypeError, function() {
+ return instance.method.arguments;
+});
+
+assert.throws(TypeError, function() {
+ instance.method.arguments = {};
+});
+
+// --- Test getter restricted properties throw
+
+assert.throws(TypeError, function() {
+ return accessor.get.caller;
+});
+
+assert.throws(TypeError, function() {
+ accessor.get.caller = {};
+});
+
+assert.throws(TypeError, function() {
+ return accessor.get.arguments;
+});
+
+assert.throws(TypeError, function() {
+ accessor.get.arguments = {};
+});
+
+// --- Test setter restricted properties throw
+
+assert.throws(TypeError, function() {
+ return accessor.set.caller;
+});
+
+assert.throws(TypeError, function() {
+ accessor.set.caller = {};
+});
+
+assert.throws(TypeError, function() {
+ return accessor.set.arguments;
+});
+
+assert.throws(TypeError, function() {
+ accessor.set.arguments = {};
+});
+
+reportCompare(0, 0);