1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// 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.15
description: >
Function `name` attribute not inferred in presence of static `name` method
info: |
ClassDeclaration : class BindingIdentifier ClassTail
[...]
4. Let hasNameProperty be HasOwnProperty(value, "name").
5. ReturnIfAbrupt(hasNameProperty).
6. If hasNameProperty is false, then perform SetFunctionName(value,
className).
features: [generators]
---*/
class A {
static name() {
$ERROR('Static method should not be executed during definition');
}
}
assert.sameValue(typeof A.name, 'function');
var attr = 'name';
class B {
static [attr]() {
$ERROR(
'Static method defined via computed property should not be executed ' +
'during definition'
);
}
}
assert.sameValue(typeof B.name, 'function');
var isDefined = false;
class C {
static get name() {
if (isDefined) {
return 'pass';
}
$ERROR('Static `get` accessor should not be executed during definition');
}
}
isDefined = true;
assert.sameValue(C.name, 'pass');
class D {
static set name(_) {
$ERROR('Static `set` accessor should not be executed during definition');
}
}
assert.sameValue(D.name, undefined);
class E {
static *name() {
$ERROR('Static GeneratorMethod should not be executed during definition');
}
}
assert.sameValue(typeof E.name, 'function');
|