Release blocker
main is red on 4 gap tests that are expected to pass (none is listed in test-parity/gap_snapshot.json). This blocks the v0.5.1519 release: any candidate refreshed from current main inherits these failures.
test_gap_iterator_helpers_2874
test_gap_language_types_object_part_a
test_gap_object_string_wrappers
test_gap_5592_class_expr_rebind_computed_accessor
Attribution — single-commit bisect, verified good endpoint
| test |
a722b4cca2 (parent) |
89cde4ff14 (#9169) |
test_gap_iterator_helpers_2874 |
PASS |
FAIL |
test_gap_language_types_object_part_a |
PASS |
FAIL |
test_gap_object_string_wrappers |
PASS |
FAIL |
test_gap_5592_class_expr_rebind_computed_accessor |
PASS |
FAIL |
The good endpoint was run before being used as a baseline: all four pass at a722b4cca2.
Also verified these are NOT caused by PR #9242 (which CI blamed): with #9242's codegen change fully reverted on top of 89cde4ff14, all four still fail. #9242's only effect on this set is turning test_issue_945_scalar_method_guards from FAIL to PASS.
Why it reached main
gap-suite-build on #9169 did not complete (The operation was canceled), so every dependent gap shard was skipped. Nothing evaluated these tests before the merge.
Reproduction
cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static
PERRY_SKIP_BUILD=1 PERRY_BIN="$PWD/target/perry-dev/perry" \
PERRY_RUNTIME_DIR="$PWD/target/perry-dev" PERRY_NO_AUTO_OPTIMIZE=1 \
./run_parity_tests.sh --filter test_gap_iterator_helpers_2874
Observed for test_gap_iterator_helpers_2874 — Perry stops after the third line:
function
function
[ 1, 2, 3 ]
TypeError: undefined is not iterable
Node continues with [ 2, 4, 6 ], [ 2, 3 ], … The failing expression is [...gen().map((x) => x * 2)]: an iterator-helper method on a generator's prototype chain returns undefined.
Suspected surface
#9169 changed exactly the dispatch surfaces these tests exercise:
object/iterator_prototypes.rs — attach_iterator_prototype/chain_to switched off object_set_static_prototype so OBJECT_META_FLAG_PROTO_OVERRIDE is no longer set on array/Map/Set/String iterator prototypes
object/field_get_set/prototype_override.rs (new), get_field_by_name_tail.rs
object/native_call_method.rs, object/class_registry.rs
The gen().map(...) failure is consistent with a built-in iterator prototype no longer being reachable by the lookup path that resolves helper methods.
Acceptance criteria
Release blocker
mainis red on 4 gap tests that are expected to pass (none is listed intest-parity/gap_snapshot.json). This blocks the v0.5.1519 release: any candidate refreshed from currentmaininherits these failures.test_gap_iterator_helpers_2874test_gap_language_types_object_part_atest_gap_object_string_wrapperstest_gap_5592_class_expr_rebind_computed_accessorAttribution — single-commit bisect, verified good endpoint
a722b4cca2(parent)89cde4ff14(#9169)test_gap_iterator_helpers_2874test_gap_language_types_object_part_atest_gap_object_string_wrapperstest_gap_5592_class_expr_rebind_computed_accessorThe good endpoint was run before being used as a baseline: all four pass at
a722b4cca2.Also verified these are NOT caused by PR #9242 (which CI blamed): with #9242's codegen change fully reverted on top of
89cde4ff14, all four still fail. #9242's only effect on this set is turningtest_issue_945_scalar_method_guardsfrom FAIL to PASS.Why it reached main
gap-suite-buildon #9169 did not complete (The operation was canceled), so every dependent gap shard was skipped. Nothing evaluated these tests before the merge.Reproduction
Observed for
test_gap_iterator_helpers_2874— Perry stops after the third line:Node continues with
[ 2, 4, 6 ],[ 2, 3 ], … The failing expression is[...gen().map((x) => x * 2)]: an iterator-helper method on a generator's prototype chain returnsundefined.Suspected surface
#9169 changed exactly the dispatch surfaces these tests exercise:
object/iterator_prototypes.rs—attach_iterator_prototype/chain_toswitched offobject_set_static_prototypesoOBJECT_META_FLAG_PROTO_OVERRIDEis no longer set on array/Map/Set/String iterator prototypesobject/field_get_set/prototype_override.rs(new),get_field_by_name_tail.rsobject/native_call_method.rs,object/class_registry.rsThe
gen().map(...)failure is consistent with a built-in iterator prototype no longer being reachable by the lookup path that resolves helper methods.Acceptance criteria
issue_9131_prototype_method_replacement) still passes.gap-suiteshards actually RUN and are green before merge — a cancelledgap-suite-buildmust not be read as a pass.