// 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');