Repository navigation
fix(magic-sets): guard a rule only by demand every call site supplies (#608) - #611
Merged
Merged
Conversation
…#608) Backport of #609 from v3. Adornments were taken from the first call to each rule and assumed for every other call. A call that did not match — a rule-body call whose argument nothing had bound yet, the same rule called with free arguments, a call inside or/not, or a call from an unguarded rule — failed with INT-022 or silently got only the demanded facts. solve_adornments now starts each reachable rule all-bound and weakens it to the meet of every call site's adornment until a fixpoint; a rule left with no bound position is evaluated unguarded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyLscCUuJ1GQpdAeX79EdR
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #609 (merged on
v3as b1e8b73) to v2.x for #608.magic_sets.rsandtests/magic_sets_test.rswere identical onmainandv3, so the code change applies unchanged. Only the doc lines were redone formain: the CHANGELOG[Unreleased]entry and the test counts.See #609 for the root cause and the fix. In short, magic sets used the first call to each rule to decide its bound arguments, so other calls either failed with
INT-022or got too few rows. Each rule is now narrowed only to what every call to it can provide.On
main, the 7 new integration tests reproduce #608 and the cases where too few rows came back silently. The full suite passes: 1258 passed, 9 ignored.cargo clippy --all-features -- -D warningsis clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01HyLscCUuJ1GQpdAeX79EdR