Summary
GraphQL input X { field: Type } and union U = A | B | C declarations capture the container symbol but do not emit per-field or per-variant rows (SymbolExtractor.cs:1680-1681). A references / definition query against an input-type field name (UpdateUserInput.email) returns nothing; union variant names (A, B, C) cannot be navigated to even though they are first-class type references in GraphQL. Sibling concern to the already-filed #1025 (fragment / directive gaps) — together they cover the major remaining GraphQL extractor blind spots.
Where
src/CodeIndex/Indexer/Extraction/SymbolExtractor.cs:1680-1681 (GraphQL input/union handling)
Suggested approach
(1) For input X { ... }, parse the body and emit one symbol per field with kind input_field (or reuse field with parent metadata pointing at X). (2) For union U = A | B | C, emit one reference row per variant (A, B, C) of kind type_reference, parented to U. (3) Handle the multi-line form union U =\n | A\n | B. (4) Cover extend input X and extend union U (cross-link with #1025 — same extend family). (5) Add fixtures and regression tests using a representative GraphQL schema (one input with 3 fields, one union with 3 variants, one extend on each). (6) Update the kind taxonomy doc (cross-link with #1772).
Summary
GraphQL
input X { field: Type }andunion U = A | B | Cdeclarations capture the container symbol but do not emit per-field or per-variant rows (SymbolExtractor.cs:1680-1681). Areferences/definitionquery against an input-type field name (UpdateUserInput.email) returns nothing;unionvariant names (A,B,C) cannot be navigated to even though they are first-class type references in GraphQL. Sibling concern to the already-filed #1025 (fragment / directive gaps) — together they cover the major remaining GraphQL extractor blind spots.Where
src/CodeIndex/Indexer/Extraction/SymbolExtractor.cs:1680-1681(GraphQL input/union handling)Suggested approach
(1) For
input X { ... }, parse the body and emit one symbol per field with kindinput_field(or reusefieldwith parent metadata pointing atX). (2) Forunion U = A | B | C, emit one reference row per variant (A,B,C) of kindtype_reference, parented toU. (3) Handle the multi-line formunion U =\n | A\n | B. (4) Coverextend input Xandextend union U(cross-link with #1025 — sameextendfamily). (5) Add fixtures and regression tests using a representative GraphQL schema (one input with 3 fields, one union with 3 variants, one extend on each). (6) Update the kind taxonomy doc (cross-link with #1772).