Fix matrix void method return lowering#98
Merged
Conversation
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.
What changed
voidRoot cause
The terminal-expression classifier handled void drawing, array, and map calls, but not matrix mutators. A single-expression method ending in
matrix.set(self, ...)orself.set(...)could therefore generate invalid C++ such asreturn self.set(...);, even though the runtime call returnsvoid.Matrix detection must also resolve the exact receiver type. Same-named authored typed methods take precedence over builtins and must remain returnable, including when a parameter named
matrixshadows the builtin namespace.Validation
8f7dc924ed02696f2b799ec194c76187e3480bf6The long gates ran against the exact three candidate file contents committed at the tested head. Their SHA-256 hashes were frozen before commit and verified unchanged after commit; the 25-case focused suite was then rerun from the clean committed head.
Scope boundary
This changes only terminal-call classification for matrix mutators whose existing C++ lowering returns
void. It does not change the parser, analyzer, or matrix runtime implementations.remove_rowandremove_colretain their existing numeric-sentinel lowering, and matrix-returning transforms remain on their established return path.