fix(rt): closure type metadata decode + setupCalleeClosure3#957
Draft
Stevengre wants to merge 6 commits intocodex/base-pr957-pr955-pr956from
Draft
fix(rt): closure type metadata decode + setupCalleeClosure3#957Stevengre wants to merge 6 commits intocodex/base-pr957-pr955-pr956from
Stevengre wants to merge 6 commits intocodex/base-pr957-pr955-pr956from
Conversation
This was referenced Feb 28, 2026
automergerpr-permission-manager bot
pushed a commit
to runtimeverification/stable-mir-json
that referenced
this pull request
Mar 2, 2026
#129) ### Summary - In `TyCollector::visit_ty` (`src/printer.rs`), after successful closure instance traversal, record closure `Ty` metadata in `types`. - Update integration golden files (`tests/integration/programs/*.smir.json.expected`) to match emitted closure `FunType` metadata. - Keep `Makefile` integration path as `TESTDIR=tests/integration/programs` to keep closure fixture output paths stable. ### Context In the closure arm of `TyCollector::visit_ty`, the code resolved and visited the closure instance but returned without inserting the closure `Ty` into `types`. Other type families were inserted; closures were the exception. This made downstream closure type lookup incomplete (notably for kmir proof paths that consume exported type metadata). Recording closure `Ty` closes that gap. Related split: static/vtable alloc fallback changes were moved out to [stable-mir-json#131](#131) so this PR stays focused on closure metadata. Dependency context: this PR is depended on by [mir-semantics#957](runtimeverification/mir-semantics#957).
085f266 to
cf54fdd
Compare
9ffa29f to
79f90e4
Compare
79f90e4 to
761dbc0
Compare
761dbc0 to
1986fca
Compare
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.
Summary
iter-eqrepro and adds one more fix iteration above the existing chain.kmir/src/kmir/decoding.py, which unblockslookupAlloc(allocId(1))fromUnableToDecodePyand removes the#decodeConstant(...RefType...)stuck frontier.#EndProgram(no stuck leaf).showtracking, deletes its show snapshot, and renames the repro file from*-fail.rsto passing form.Scope
kmir/src/kmir/decoding.pykmir/src/tests/integration/test_integration.pykmir/src/tests/integration/data/prove-rs/iter-eq-copied-take-dereftruncate.rs(renamed)kmir/src/tests/integration/data/prove-rs/show/iter-eq-copied-take-dereftruncate-fail.repro.expected(deleted)Testing
REMOTE: uv --project kmir run -- pytest kmir/src/tests/integration/test_integration.py -k iter-eq-copied-take-dereftruncate-fail --update-expected-outputapr_proof.failed == False) because it reaches EndProgram.REMOTE: uv --project kmir run -- kmir prove-rs kmir/src/tests/integration/data/prove-rs/iter-eq-copied-take-dereftruncate-fail.rs --start-symbol repro --proof-dir .tmp-proofs/iter-eq-status-checkProofStatus.PASSED,stuck: 0,terminal: 2).REMOTE: uv --project kmir run -- pytest kmir/src/tests/integration/test_integration.py -k iter-eq-copied-take-dereftruncate1 passed, 250 deselected).