Fix extern module resolution and module type merging #26
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
Changes
1. Two-Pass Compilation with ProjectExterns
ProjectExternsstruct to collect and share extern declarations across filesExternCollectorvisitor to extract extern declarations in first passtranspile_projectto collect externs before semantic analysisSemanticVisitorto accept optional project context2. Type Alias Resolution Fix
ExternCollectorto properly resolve type aliases likePathLike = anyresolve_type_stringmethod to check extern_types before creating types3. Module Type Merging Fix
merge_module_typesinanalyze_local_moduleOperation::Add(5)) from imported modulesTest Results
The
fs-examplenow builds and runs successfully, demonstrating that extern declarations in one file are properly visible when importing from modules in other files.Fixes
Resolves the issue where extern module declarations were not visible across files in multi-file projects.