Fix array initialization handling in stage3 and C codegen#24
Open
manux81 wants to merge 2 commits into
Open
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.
This PR fixes array initialization handling across semantic analysis and C code generation.
Before this change, some array initialization cases were not handled consistently in stage3, and invalid initializations could propagate to stage4 and end in an internal compiler error instead of a proper user-facing error.
Changes included:
add explicit stage3 handling for array initialization elements in fill, narrow, and error-reporting passes
propagate array element datatypes through nested and non-elementary initializers
make lvalue_check explicitly traverse structured and array variables
replace internal backend crashes in stage4 with a proper diagnostic when an array initialization exceeds the array size declared in its type
User-facing improvement:
invalid array initializations no longer fail with an internal compiler error in the tested path
stage4 now reports:
Array initialization exceeds the array size declared in its type.