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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions