feat: implement recursive import expansion and type checking #258
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 significantly upgrades the Wave compiler's ability to handle multi-file projects by implementing a recursive import expansion system. It also strengthens the LLVM backend with stricter type validation for functions and variables, ensuring that code generation is both robust and type-safe.
Key Changes
1. Recursive Import System
local_importintolocal_import_unit, which now tracks absolute paths to perform deep dependency tree flattening viaexpand_imports_recursive.foo::bar) when running in standalonewavecmode.std::*imports to serve as placeholders for the upcoming standard library.2. Enhanced LLVM Codegen & Type Safety
ifstatements by explicitly comparing integers and floats against zero to produce valid LLVMi1types.3. Runner & Infrastructure
run_wave_file, allowing the runner to compile projects spanning multiple.wavefiles.Technical Details
HashSetto prevent circular dependencies and redundant file processing.icmp/fcmp) for conditional expressions to maintain IR integrity.