Skip to content

Regression on main: be2e23f86 (#6470 per-evaluation class captures) breaks boxed-capture reads — gap tests anon_shape_boxed_capture + 5952_mixin_factory_binding fail, every PR's conformance shards 5/7 red #6497

Description

@proggeramlug

Bisected on macOS host builds (each step: cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static, then compile + run the gap test and diff against node):

Symptom on test_gap_anon_shape_boxed_capture (final line of the test, the sharedCell() function whose class captures and mutates a boxed local):

node : shared cell   : 12,12
perry: shared cell   : undefined,10

i.e. c.read() returns undefined (the method's read of the captured count box) and the count++ bumps performed through the class method are lost (count += 10 lands on 0 → 10). Exactly the per-evaluation-capture shape #6470 touched:

function sharedCell() {
  let count = 0;
  class Counter {
    bump() { count++; }
    read() { return count; }
  }
  const c = new Counter();
  c.bump(); c.bump();
  count += 10;
  return c.read() + "," + count;
}

test_gap_5952_mixin_factory_binding fails at the same commit (not bisect-verified line-by-line, but parent passes / be2e23f fails).

Impact: these two tests are untriaged in test-parity/known_failures.json, so conformance-smoke shards 5 and 7 fail on every PR branched from current main (observed twice on an unrelated GC PR, #6494 — both rounds, deterministic). Main's own scheduled run hasn't flagged it (the last three daily runs died earlier on a rustup-download infra error in cargo-test).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions