test(codegen): assert the guard-failure edge's property, not a symbol name (#7506) - #7807
Conversation
|
Warning Review limit reached
Next review available in: 34 seconds You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
d6af333 to
0b954e6
Compare
Covers the 32 PRs admin-merged in one pass (audited in principle at the maintainer's direction): PerryTS#7768 PerryTS#7772 PerryTS#7779 PerryTS#7784 PerryTS#7785 PerryTS#7786 PerryTS#7788 PerryTS#7789 PerryTS#7797 PerryTS#7798 PerryTS#7801 PerryTS#7802 PerryTS#7804 PerryTS#7805 PerryTS#7806 PerryTS#7807 PerryTS#7808 PerryTS#7810 PerryTS#7811 PerryTS#7815 PerryTS#7816 PerryTS#7818 PerryTS#7819 PerryTS#7820 PerryTS#7821 PerryTS#7822 PerryTS#7823 PerryTS#7824 PerryTS#7825 PerryTS#7826 PerryTS#7827 PerryTS#7828. (PerryTS#7787 closed as already-landed via the PerryTS#7786 stack.) Per-change history lives in each PR's changelog.d fragment as usual. Claude-Session: https://claude.ai/code/session_01Y1QZ5wUP9gRSwpiweT4Wix
typed_f64_receiver_method_clone_raw_loads_after_composed_guardsis green again, and now asserts the property instead of a symbol name (#7506).native_proof_regressionsgoes from 261/262 to 262/262 and moves into the per-PR map.#7506 posed the question directly: the guard-failure edge stopped calling
$generic, so either the assertion is stale or a receiver whose fields are not raw f64 takes the typed clone's raw loads anyway. Answered by reading the emitted IR rather than by choosing.The composition still has three outcomes, not two:
js_native_call_method_by_id(fully dynamic)$typed_f64_recv, which raw-loads the receiver's slots with no coercion$pshape, a Ptr cloneSo (3) changed callee, not existence. And
$pshapeis sound for that edge for a reason the old assertion could not express: it does emitinttoptr+getelementptr+load double— the shape guarantees the slot OFFSETS — but routes every loaded slot throughjs_number_coerce, which is exactly the right handling for a slot that may hold a NaN-boxed value. It is a strictly better target than the generic body, and it is still correct when the guard that just failed said nothing about the slots' representation.The assertion is therefore re-pointed at that property, following #7492's worked example:
$genericor$pshape);$typed_f64_recv, whose whole premise is the guard that just failed;$pshape, that clone must containjs_number_coerce— without which it would be the typed clone under another name.Both new assertions were sabotage-verified: breaking the coercion check and narrowing the accepted callee set each make the test fail with its own message; restoring passes.
Because the suite is now fully green, its
SUITE_EXCLUSIONSentry is deleted andnative_proof_regressionsjoinsSOURCE_SUITE_MAP. That is not optional bookkeeping —e2e-scopedfails the job when an excluded test PASSES, andci_e2e_scope.py --self-testrefuses a suite that is in neither list, which is what caught the half-done state while I was making this change. Self-test passes.Worth recording alongside #7245: of the 16 tests that issue reported red, 15 had already been fixed by unrelated work with nothing recording it. This was the only real one.