test262/test/language/expressions/delete/super-property-uninitialized-this.js
André Bargull 18ae34d8f2 Improve coverage for reference type in various contexts
Missing coverage encountered while implementing
<https://github.com/tc39/ecma262/pull/3307> in SpiderMonkey.

Ensure environment lookups are performed in the correct order:
- keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js

Ensure `delete super[elem]` steps are correctly performed:
- delete/super-property-topropertykey.js
- delete/super-property-uninitialized-this.js

Ensure ToPropertyKey for computed property names in object literals
correctly performed:
- object/computed-property-name-topropertykey-before-value-evaluation.js

Ensure `GetSuperBase` is executed before `ToPropertKey`:
- super/prop-expr-getsuperbase-before-topropertykey-*

Ensure `GetThisBinding` is executed first:
- super/prop-expr-uninitialized-this-*
2024-09-20 16:00:53 +02:00

44 lines
1.0 KiB
JavaScript

// Copyright (C) 2024 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-delete-operator-runtime-semantics-evaluation
description: >
Element expression in delete super not evaluated when this is uninitialized.
info: |
13.5.1.2 Runtime Semantics: Evaluation
UnaryExpression : delete UnaryExpression
1. Let ref be ? Evaluation of UnaryExpression.
...
13.3.7.1 Runtime Semantics: Evaluation
SuperProperty : super [ Expression ]
...
2. Let actualThis be ? env.GetThisBinding().
3. Let propertyNameReference be ? Evaluation of Expression.
...
9.1.1.3.4 GetThisBinding ( )
...
2. If envRec.[[ThisBindingStatus]] is uninitialized, throw a ReferenceError exception.
...
---*/
class Base {
constructor() {
throw new Test262Error("base constructor called");
}
}
class Derived extends Base {
constructor() {
delete super[(super(), 0)];
}
}
assert.throws(ReferenceError, () => new Derived);