Conversation
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Use the coarse reference index for conclusive zero counts and cache bounded exact member locations for non-zero lenses. Refresh-capable clients avoid eager resolve storms while older clients retain lazy resolution.
Stop reference counts and CodeLens resolves from repeating the full workspace walk for every declaration. Internal annotation requests share the initial index, including callers queued behind it, while an explicit Find References command keeps its single refresh for files created without watcher notifications.
sidux
force-pushed
the
feat/symfony-twig-template-intelligence
branch
from
August 30, 2026 15:33
aa106ab to
7239d40
Compare
Resolve fully-qualified classes and Class::member references from arbitrary YAML and XML positions without schema-specific rules.
Feed schema-free class and member occurrences into Find References and CodeLens, including transparent-proxy metadata aliases.
Index semantic framework relationships alongside generic YAML and XML class references.
Pass every indexed target to editor-native navigation and ignore empty PHP resource strings.
Generic YAML and XML navigation now returns early only when it resolves a PHP symbol. Otherwise the semantic Symfony resolver still handles aliases, form fields, validation mappings, and configuration keys.
Build entity-to-repository pairs alongside the framework resource index and update them per URI. CodeLens and reference lookups now read the derived index instead of reopening and rescanning every YAML/XML resource for each declaration.
sidux
force-pushed
the
feat/symfony-twig-template-intelligence
branch
from
August 30, 2026 15:54
7239d40 to
46ca1b9
Compare
The reference CodeLens and YAML/XML navigation this branch was built on landed upstream (PHPantom-dev#392, PHPantom-dev#394) and were reworked there, so this applies only the branch's own changes on top of main. - Member-scope resolution moved to references/member_scope.rs; the Doctrine getRepository() receiver resolution now lives there, using the namespace-aware use map, and framework member lookups filter through MemberScope. - Document open/change/close and startup indexing moved to backend/documents.rs and backend/startup.rs; the framework resource index hooks follow them. YAML/XML watchers already exist upstream. - Code lenses use the request's LineIndex; the framework method lens skips methods no resource names and builds its class scope once. - Rename keeps working across file types: YAML/XML class and namespace occurrences are rewritten by the framework index in each document's own spelling and verified one by one, so an escaped name can no longer cancel a rename. A rename started in a resource renames the PHP declaration it names. - Fix namespace segment indexing for escaped (App\\Domain) and rooted (\App\Domain) spellings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ntainer-intelligence Brings in main through the updated framework-resource-navigation branch. - Symfony PHP configurator strings join the cross-file-type rename: a position with no PHP symbol falls back to the framework index, class searches for a rename leave framework locations to the index, and the index skips occurrences the PHP rename already edits (`Foo::class`), so no edit is written twice. - Service and parameter renames keep their own escaping-aware edits. - Keep upstream's rule that a doubled backslash is not a valid new name; escaping is applied per occurrence instead. - Framework Symfony symbol locations use a per-file line index and the shared de-duplicating sort; the Symfony resource lens uses the request's line index. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oute-intelligence Brings in main through the updated service-container branch. - Route parameters rename through the framework index like service ids. - Twig templates became framework resources here, so the document lifecycle indexes YAML, XML, and Twig alike without parsing them as PHP, and `*.twig` is now watched so a template changed on disk is re-indexed. - Framework symbol and route-parameter lookups share one location helper built on a per-file line index. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-intelligence Brings in main through the updated route-intelligence branch. - Opening or editing a framework resource schedules its diagnostics in the moved document handlers, after the off-loop re-index commits. - Template names stay out of rename. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ntainer-intelligence
…oute-intelligence
- Skip vendor/var/cache directories relative to the workspace root, so a project that itself lives under /var/www or a temp directory is still indexed. - Convert framework reference offsets through one line index per file instead of rescanning the file for every reference. - Let the type engine answer a member receiver first; the getRepository() shortcut only applies when it knows nothing or only Doctrine's generic repository, and only reads assignments inside the enclosing function. - Treat a class as a Doctrine repository only when it extends or implements one of Doctrine's repository types, so a project's own UserRepository gets no Doctrine lenses, and look repositories and entities up by convention and the inheritance index instead of scanning every indexed class on each lens request.
…ntainer-intelligence Brings in the resource indexing and Doctrine lookup fixes. The PHP configuration paths this branch indexes get the same workspace-relative skip check, and a `config` directory above the workspace no longer makes every PHP file look like configuration. Symfony diagnostics now gather every declared name in one pass over the framework index, and only for a file that uses one, instead of scanning the whole index once per symbol kind. Declared names are de-duplicated through a hash set rather than a linear search per name.
…oute-intelligence Route declarations are checked through the single-pass declared-name lookup.
…-intelligence Template declarations are checked through the single-pass declared-name lookup.
This branch has not been deployed
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.
Summary
Why
Template names behave like project symbols, but Symfony applications reference them through strings and Twig directives rather than PHP classes. A shared template index makes navigation and diagnostics consistent across both languages, while the create action turns a verified missing template into a direct workflow.
Dependencies
Validation
cargo clippy --fix --allow-dirty -- -D warningscargo fmtcargo clippy --all-targets -- -D warningscargo test— 14,140 passed, 12 ignored