Skip to content

Implement lazy module loading for nested module access#884

Open
seth-schultz wants to merge 2 commits intorue-language:trunkfrom
seth-schultz:module-loading
Open

Implement lazy module loading for nested module access#884
seth-schultz wants to merge 2 commits intorue-language:trunkfrom
seth-schultz:module-loading

Conversation

@seth-schultz
Copy link

Summary

Implements lazy module loading to fix nested module member access (e.g., std.math.abs()).

Problem

ADR-0026 claimed nested module access worked, but it didn't. Accessing std.math.abs() would fail because module exports weren't being loaded on demand.

Solution

  • Add ModuleDef export tracking (functions, structs, enums, constants with visibility)
  • Create module_loader.rs for lazy scanning of module exports when first accessed
  • Extract check_visibility() helper to reduce code duplication in analyze_ops.rs
  • Clean up types.rs docstrings

Testing

  • All 1341 spec tests pass
  • All 445 unit tests pass
  • Nested module access now works correctly

- Enable Zola's built-in search index in config.toml
- Add elasticlunr-based search.js for client-side search
- Add search input to spec sidebar with keyboard shortcut (Cmd/Ctrl+K)
- Add CSS styles for search UI with light/dark mode support

The search indexes all spec pages and shows results in a
dropdown with titles and body snippets.
Add module_loader.rs for on-demand scanning of module exports when
first accessed (e.g., std.math.abs()). This fixes nested module member
access which was claimed to work in ADR-0026 but didn't.

Changes:
- Add ModuleDef export tracking (functions, structs, enums, constants)
- Create module_loader.rs for lazy export scanning
- Extract check_visibility() helper to reduce duplication
- Clean up types.rs docstrings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant