test262/test/language/statements/class/poisoned-underscore-proto.js

29 lines
659 B
JavaScript

// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: prod-ClassDeclaration
description: >
ClassDeclaration should directly set [[Prototype]] internal slot.
info: |
ClassDefinitionEvaluation
[...]
7. Let proto be ObjectCreate(protoParent).
ObjectCreate ( proto [ , internalSlotsList ] )
[...]
4. Set obj.[[Prototype]] to proto.
features: [class]
---*/
Object.defineProperty(Object.prototype, '__proto__', {
set: function() {
throw new Test262Error('should not be called');
},
});
class A extends Array {}
assert.sameValue(new A(1).length, 1);