Skip to content

[TS] Track deletion of object properties - #461

Merged
CaelmBleidd merged 8 commits into
mainfrom
caelmbleidd/ts-426-delete-property
Oct 9, 2026
Merged

CaelmBleidd merged 8 commits into
mainfrom
caelmbleidd/ts-426-delete-property

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Closes #426.

Track own-property deletion separately from stored values, for both allocated objects and symbolic input receivers. Previously, delete only overwrote address-sorted storage, leaving numeric and Boolean values visible. Deletion markers now start at false for every receiver and record execution writes using the existing symbolic memory-update machinery. Reads return undefined after deletion; assignments restore the field; aliases observe the update; distinct receivers and untouched conditional paths keep their original values.

Deleting a value evaluates its operand and returns true, preserving side effects. Type assertions delegate to the underlying operand. Cases requiring prototype lookup, array-element deletion, and unsupported binding/reference forms remain explicit unsupported outcomes. With the pinned frontend, delete (obj.field as any) loses the property reference when the cast operand is lowered to a temporary local; a regression preserves this as unsupported instead of reporting success without deleting the field.

Based on main 70a88e3d6a0156c4e7b40d912e9c1d31e9530a12. Typed-string field materialization is preserved; the published JacoDB pin remains ddb127d9ef.

Validation:

  • Focused usvm-ts tests: 71 passed, 21 existing disabled tests skipped, 0 failures. Includes 23/23 DeleteProperty tests, input receiver aliasing/non-aliasing, conditional deletion, restoration, fields, string equality/truthiness/concatenation, and string/array isolation.
  • Generated input/value witnesses for eight deletion methods replayed in Node.js.
  • usvm-ts-calls: 13/13 tests passed.
  • Detekt main/test: zero findings. git diff --check passed.

These are focused local checks. Remote CI on the updated head and human approval remain separate merge gates.

@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-426-delete-property branch from ce99964 to 53d10be Compare October 2, 2026 22:31
@CaelmBleidd
CaelmBleidd changed the base branch from main to caelmbleidd/ts-422-string-value-equality October 2, 2026 22:32
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-422-string-value-equality branch from 7927e93 to 127ecb5 Compare October 3, 2026 05:21
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-426-delete-property branch from 8add94d to 3a06f16 Compare October 3, 2026 05:28
@CaelmBleidd
CaelmBleidd marked this pull request as ready for review October 3, 2026 06:43
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-422-string-value-equality branch from e5527a3 to 7217c2a Compare October 4, 2026 19:51
Base automatically changed from caelmbleidd/ts-422-string-value-equality to main October 5, 2026 12:37
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-426-delete-property branch from b33728a to 2f50d8e Compare October 7, 2026 22:16
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-426-delete-property branch from 2f50d8e to 36e6d55 Compare October 9, 2026 12:54
@CaelmBleidd CaelmBleidd changed the title [TS] Track deletion of allocated object properties [TS] Track deletion of object properties Oct 9, 2026
@CaelmBleidd
CaelmBleidd merged commit 4141213 into main Oct 9, 2026
7 checks passed
@CaelmBleidd
CaelmBleidd deleted the caelmbleidd/ts-426-delete-property branch October 9, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[TS] Delete object properties across all value sorts

1 participant