// Copyright (C) 2017 the V8 project authors, 2017 Igalia S.L. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- desc: Computed property names info: | ClassElement: ... FieldDefinition ; FieldDefinition: ClassElementName Initializer_opt ClassElementName: PropertyName template: productions includes: [propertyHelper.js] features: [computed-property-names] ---*/ //- setup var x = "b"; //- fields [x] = 42; [10] = "meep"; ["not initialized"] //- assertions assert.sameValue(Object.hasOwnProperty.call(C.prototype, "b"), false); assert.sameValue(Object.hasOwnProperty.call(C, "b"), false); verifyProperty(c, "b", { value: 42, enumerable: true, writable: true, configurable: true }); assert.sameValue(Object.hasOwnProperty.call(C.prototype, "x"), false); assert.sameValue(Object.hasOwnProperty.call(C, "x"), false); assert.sameValue(Object.hasOwnProperty.call(c, "x"), false); assert.sameValue(Object.hasOwnProperty.call(C.prototype, "10"), false); assert.sameValue(Object.hasOwnProperty.call(C, "10"), false); verifyProperty(c, "10", { value: "meep", enumerable: true, writable: true, configurable: true }); assert.sameValue(Object.hasOwnProperty.call(C.prototype, "not initialized"), false); assert.sameValue(Object.hasOwnProperty.call(C, "not initialized"), false); verifyProperty(c, "not initialized", { value: undefined, enumerable: true, writable: true, configurable: true });