Parents: #465, #498 Related: #491, #712
Problem
The compiler inventories delete_expr for yield/capture analysis but has no expression lowering arm and bytecode has no delete operation. Any otherwise eligible program, plain function, generator, or async function containing delete therefore falls back, including property deletes whose exact Reference already fits the operand stack.
Scope
- Lower named/computed member deletion through owned bytecode operations that preserve
[[Delete]], attributes, arrays/strings, Proxies, Symbols/private-name rules, and strict-mode failure behavior. - Preserve one-shot base and computed-key evaluation, suspension across
yield/await, RequireObjectCoercible/ToPropertyKey ordering, and exceptions. - Lower optional member deletion so a nullish short circuit yields
true, while parentheses retain the exact chain boundary. - Lower non-Reference operands by evaluating their side effects once and yielding
truewithout inventing runtime work. - Cover program, plain-function, generator, and async admission; keep bare identifier deletion and
superdeletion as explicit causal barriers until their environment/super contracts have dedicated operations. - Preserve exact interpreter/VM agreement and native-tier fallback without adding a runtime stack container.
No-workaround rules
- No repeated observable evaluation, hidden global/environment bindings, heap wrapper per Reference, source/AST rewriting, tree-walker callback presented as bytecode, weakened Proxy invariants, or global lock serialization.
- No stacks/queues/jobs-runtime, Promise, Worker, or Map/Set iterator changes.
Acceptance
- Named/computed/optional property delete and non-Reference delete compile across program/plain/generator/async tiers.
- Witnesses cover strict/sloppy configurable failures, arrays/strings/primitives, Proxies and revoked/invariant traps, Symbols, key coercion order, suspension, GC relocation, and abrupt completion.
- Bare identifier and
superdelete remain audited causal rejections with stable admission reasons. - Forced tree-walker/required bytecode agree; focused compiler/frontend, full units, applicable TSan, and exact delete/optional-chaining Test262 before → after accounting pass with zero regressions.
- Parent/related issues and landing commit carry quantified evidence links.