blob: d35e730532a6453af55bb3f218c1a68e24570e4a [file] [log] [blame]
keith_miller@apple.combcc77f22016-07-15 06:03:25 +00001// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved.
2// This code is governed by the BSD license found in the LICENSE file.
3
4/*---
5es6id: 12.2.6.9
6description: >
7 Assignment of function `name` attribute (GeneratorExpression)
8info: >
9 6. If IsAnonymousFunctionDefinition(AssignmentExpression) is true, then
10 a. Let hasNameProperty be HasOwnProperty(propValue, "name").
11 b. ReturnIfAbrupt(hasNameProperty).
12 c. If hasNameProperty is false, perform SetFunctionName(propValue,
13 propKey).
14includes: [propertyHelper.js]
15features: [generators, Symbol]
16---*/
17
18var namedSym = Symbol('test262');
19var anonSym = Symbol();
20var o;
21
22o = {
23 xId: function* x() {},
24 id: function*() {},
25 [anonSym]: function*() {},
26 [namedSym]: function*() {}
27};
28
29assert(o.xId.name !== 'xId');
30
31assert.sameValue(o.id.name, 'id', 'via IdentifierName');
32verifyNotEnumerable(o.id, 'name');
33verifyNotWritable(o.id, 'name');
34verifyConfigurable(o.id, 'name');
35
36assert.sameValue(o[anonSym].name, '', 'via anonymous Symbol');
37verifyNotEnumerable(o[anonSym], 'name');
38verifyNotWritable(o[anonSym], 'name');
39verifyConfigurable(o[anonSym], 'name');
40
41assert.sameValue(o[namedSym].name, '[test262]', 'via Symbol');
42verifyNotEnumerable(o[namedSym], 'name');
43verifyNotWritable(o[namedSym], 'name');
44verifyConfigurable(o[namedSym], 'name');