summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/expressions/object/fn-name-class.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/expressions/object/fn-name-class.js')
-rw-r--r--js/src/tests/test262/language/expressions/object/fn-name-class.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/expressions/object/fn-name-class.js b/js/src/tests/test262/language/expressions/object/fn-name-class.js
new file mode 100644
index 0000000000..2069749f1a
--- /dev/null
+++ b/js/src/tests/test262/language/expressions/object/fn-name-class.js
@@ -0,0 +1,45 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 12.2.6.9
+description: Assignment of function `name` attribute (ClassExpression)
+info: |
+ 6. If IsAnonymousFunctionDefinition(AssignmentExpression) is true, then
+ a. Let hasNameProperty be HasOwnProperty(propValue, "name").
+ b. ReturnIfAbrupt(hasNameProperty).
+ c. If hasNameProperty is false, perform SetFunctionName(propValue,
+ propKey).
+includes: [propertyHelper.js]
+features: [class, Symbol]
+---*/
+
+var namedSym = Symbol('test262');
+var anonSym = Symbol();
+var o;
+
+o = {
+ xId: class x {},
+ id: class {},
+ [anonSym]: class {},
+ [namedSym]: class {}
+};
+
+assert(o.xId.name !== 'xId');
+
+assert.sameValue(o.id.name, 'id', 'via IdentifierName');
+verifyNotEnumerable(o.id, 'name');
+verifyNotWritable(o.id, 'name');
+verifyConfigurable(o.id, 'name');
+
+assert.sameValue(o[anonSym].name, '', 'via anonymous Symbol');
+verifyNotEnumerable(o[anonSym], 'name');
+verifyNotWritable(o[anonSym], 'name');
+verifyConfigurable(o[anonSym], 'name');
+
+assert.sameValue(o[namedSym].name, '[test262]', 'via Symbol');
+verifyNotEnumerable(o[namedSym], 'name');
+verifyNotWritable(o[namedSym], 'name');
+verifyConfigurable(o[namedSym], 'name');
+
+reportCompare(0, 0);