test262/test/language/expressions/class/name.js

33 lines
1.1 KiB
JavaScript

// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 14.5.16
description: Assignment of function `name` attribute
info: >
ClassExpression : class BindingIdentifieropt ClassTail
5. If className is not undefined, then
a. Let hasNameProperty be HasOwnProperty(value, "name").
b. ReturnIfAbrupt(hasNameProperty).
c. If hasNameProperty is false, then
i. Perform SetFunctionName(value, className).
includes: [propertyHelper.js]
---*/
assert.sameValue(Object.hasOwnProperty.call(class {}, 'name'), false);
assert.sameValue(class cls {}.name, 'cls');
verifyNotEnumerable(class cls {}, 'name');
verifyNotWritable(class cls {}, 'name');
verifyConfigurable(class cls {}, 'name');
assert.sameValue(
Object.hasOwnProperty.call(class { constructor() {} }, 'name'), false
);
assert.sameValue(class cls { constructor() {} }.name, 'cls');
verifyNotEnumerable(class cls { constructor() {} }, 'name');
verifyNotWritable(class cls { constructor() {} }, 'name');
verifyConfigurable(class cls { constructor() {} }, 'name');