Phase 5a: add configurable Jai module roots

This commit is contained in:
hgranthorner
2026-08-05 10:24:32 -04:00
parent 9122b5a5c0
commit 2bc1b9f4be
13 changed files with 740 additions and 214 deletions

View File

@@ -75,7 +75,9 @@ dev.hgh.jai.parser.DebugParseTest tests=2 <- scratch harness, ine
dev.hgh.jai.refactoring.JaiRenameTest tests=3
dev.hgh.jai.reference.JaiReferenceTest tests=9
dev.hgh.jai.structure.JaiStructureViewTest tests=3
-> total 71, failures+errors 0
dev.hgh.jai.settings.JaiProjectSettingsTest tests=3
dev.hgh.jai.settings.JaiConfiguredRootTest tests=4
-> total 78, failures+errors 0
```
The corpus gates report what they actually did; check both lines are still there:
@@ -118,6 +120,13 @@ Tier 3: parsed 714 files, 714 clean (100.0%), 0 with errors, 0 PsiErrorElements
`#import`/`#load` path references with standard go-to-definition resolution.
Headless tests cover source-ordered declarations, nested structure members,
folding ranges, local `#load`, and Jai module directories.
- **Phase 5** — completion, same-file and imported symbol navigation, rename,
and find-usages for declaration names.
- **Phase 5a** — persistent project settings for Jai module/import roots,
shared root-aware resolution and completion, and indexed external Jai library
sources. Headless tests cover state round-tripping, the Settings panel,
custom-root `#import`/`#load` navigation and completion, and cross-root
find-usages.
### Lexer design facts worth knowing before touching it
@@ -179,30 +188,20 @@ Tier 3: parsed 714 files, 714 clean (100.0%), 0 with errors, 0 PsiErrorElements
### In progress — pick up here
1. **Phase 5 completion and navigation** — basic completion for keywords,
compiler directives, `#import`/`#load` module paths is implemented in
`dev.hgh.jai.completion.JaiCompletionContributor`. Identifier references now
resolve procedures/types in the same file and transitively loaded/imported
files. Declaration names now support rename and find-usages through the
standard PSI contracts; module-qualified members, parameters, and fields
remain future symbol-resolution work.
2. **Phases 6+** — formatter, inspections, compiler integration, and other
1. **Phases 6+** — formatter, inspections, compiler integration, and other
optional work remain. `#asm` bodies are intentionally consumed opaquely, so
nothing inside them has PSI yet.
### Next planned increment
- Add persistent project settings for configurable Jai module/import roots.
- Use those roots consistently for `#import`/`#load` resolution, completion,
symbol navigation, and find-usages.
- Include configured external `.jai` directories in indexing/search scope so
standard-library and custom-module usages are discoverable across files.
- Add headless tests for settings persistence, custom-root resolution,
completion, go-to-definition, and cross-root find-usages.
- Decide whether to continue with the optional formatter, inspections, and
compiler integration phases (68).
- If formatter work begins, add the corpus-wide idempotence gate described in
`docs/BUILD_PLAN.md` before changing formatting behavior.
### Open questions for the user (unanswered)
Scope (Phases 04 vs 07), compiler integration, target IDEs, JDK policy. See
Scope (Phases 05a vs 07), compiler integration, target IDEs, JDK policy. See
`docs/BUILD_PLAN.md` §6. Scope is the one that most affects the work.
---