2018-12-13 15:29:27 +00:00
|
|
|
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
(function testFunctionNames() {
|
|
|
|
let descriptor = {
|
|
|
|
value: '',
|
|
|
|
writable: false,
|
|
|
|
enumerable: false,
|
|
|
|
configurable: true
|
|
|
|
};
|
|
|
|
// Functions have a "name" property by default.
|
|
|
|
assertEquals(
|
|
|
|
descriptor, Object.getOwnPropertyDescriptor(function(){}, 'name'));
|
|
|
|
let a = { fn: function(){} };
|
|
|
|
assertSame('fn', a.fn.name);
|
|
|
|
descriptor.value = 'fn';
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name'));
|
|
|
|
|
|
|
|
let b = { __proto__: function(){} };
|
|
|
|
assertSame('', b.__proto__.name);
|
|
|
|
descriptor.value = '';
|
|
|
|
assertEquals(
|
|
|
|
descriptor, Object.getOwnPropertyDescriptor(b.__proto__, 'name'));
|
|
|
|
|
|
|
|
let c = { fn: function F(){} };
|
|
|
|
assertSame('F', c.fn.name);
|
|
|
|
descriptor.value = 'F';
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name'));
|
|
|
|
|
|
|
|
let d = { __proto__: function E(){} };
|
|
|
|
assertSame('E', d.__proto__.name);
|
|
|
|
descriptor.value = 'E';
|
|
|
|
assertEquals(
|
|
|
|
descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name'));
|
|
|
|
})();
|
|
|
|
|
|
|
|
(function testClassNames() {
|
|
|
|
let descriptor = {
|
|
|
|
value: '',
|
|
|
|
writable: false,
|
|
|
|
enumerable: false,
|
|
|
|
configurable: true
|
|
|
|
};
|
|
|
|
|
2019-08-22 16:56:16 +00:00
|
|
|
// Anonymous classes do have a "name" property by default with a value of ''.
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(class {}, 'name'));
|
2018-12-13 15:29:27 +00:00
|
|
|
descriptor.value = 'C';
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(class C {}, 'name'));
|
|
|
|
|
|
|
|
let a = { fn: class {} };
|
|
|
|
assertSame('fn', a.fn.name);
|
|
|
|
descriptor.value = 'fn';
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name'));
|
|
|
|
|
|
|
|
let b = { __proto__: class {} };
|
|
|
|
assertSame('', b.__proto__.name);
|
2019-08-22 16:56:16 +00:00
|
|
|
descriptor.value = '';
|
|
|
|
assertEquals(
|
|
|
|
descriptor, Object.getOwnPropertyDescriptor(b.__proto__, 'name'));
|
2018-12-13 15:29:27 +00:00
|
|
|
|
|
|
|
let c = { fn: class F {} };
|
|
|
|
assertSame('F', c.fn.name);
|
|
|
|
descriptor.value = 'F';
|
|
|
|
assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name'));
|
|
|
|
|
|
|
|
let d = { __proto__: class F {} };
|
|
|
|
assertSame('F', d.__proto__.name);
|
|
|
|
descriptor.value = 'F';
|
|
|
|
assertEquals(
|
|
|
|
descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name'));
|
|
|
|
})();
|