test(code-graph): add Java 17 sealed interface and permitted class fixture
What does this MR do?
Adds integration-test coverage for Java 17 sealed types (JEP 409), which the code indexer previously had no fixtures for.
- New fixture
crates/integration-tests-codegraph/fixtures/java/sealed_classes.yaml: asealed interface Shape permits Circle, Rectangle, Triangle, withfinalclasses Circle and Rectangle and anon-sealedclass Triangle. - Registers the suite in
crates/integration-tests-codegraph/tests/suites.rs(yaml_test!(java_sealed_classes, ...)), which the issue's affected-files list did not mention but is required since fixtures are not auto-discovered.
The tests assert:
Shapeis extracted as anInterfacedefinition with FQNcom.example.shapes.Shape- Circle, Rectangle, and Triangle are extracted as
Classdefinitions Extendsedges connect each permitted class to the sealed interface
Related Issues
Closes #738 (closed)
Closes Deviations from the issue's proposed YAML
- There is no
IMPLEMENTSedge kind in the schema; inheritance and interface implementation both produceedge_kind = 'Extends'onDefinitionToDefinitionrelationships, so the edge assertions use that (same pattern asjava/v1_main_resolution.yaml).
Known gap (as anticipated by the issue)
The indexer does not extract the permits clause itself (java_super_types() in crates/code-graph/src/v2/langs/generic/java.rs only reads superclass/interfaces). The Extends edges asserted here come from each class's implements Shape clause, not from permits. This is documented in a comment at the top of the fixture. The sealed and non-sealed modifiers parse cleanly with tree-sitter-java 0.23.5 and do not affect name extraction.
Testing
cargo nextest run -p integration-tests-codegraph --no-capture (what mise run test:integration:codegraph wraps): 173 tests run: 173 passed, 0 skipped, including [PASS] Suite: Java 17: sealed interfaces and permitted classes (3 tests). Baseline before the change was 172/172.
Performance Analysis
No performance impact. This MR is test-only: it adds one YAML fixture and one yaml_test! registration, with no changes to indexer or query-engine code. The new suite adds ~0.03s to the integration test run (PASS [0.029s] java_sealed_classes, full suite 173 tests in ~9.3s). No flamegraphs or benchmarks needed.
- This merge request does not introduce any performance regression. If a performance regression is expected, explain why.
Agent context — long-form analysis, file-by-file walkthroughs, profiler output, alternatives considered
- test(code-graph): add Java 17 sealed interface and permitted class fixture
Add integration-test coverage for Java 17 sealed types (JEP 409): a sealed interface with a permits clause and three permitted classes (final and non-sealed). Tests assert the sealed interface is extracted as an Interface definition, each permitted class as a Class definition, and Extends edges connect the permitted classes to the sealed interface via their implements clauses.Known gap (documented in the fixture): the permits clause itself is not extracted by the indexer, so no edges are derived from permits.
fix #738 (closed)