Conversation
One registry row plus a hand-written queries/julia.scm — the bundled tree-sitter-julia grammar ships no tags.scm upstream. Covers long- and short-form functions (incl. qualified Base.show and where clauses), macros, struct / abstract / primitive types with supertype references, modules, const, and plain / qualified / broadcast calls. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
🌱 graft blast radius1 area changed → 6 areas can be affected. 15 dependent symbols, depth 2. flowchart TB
A0(("Dependency Graph<br/>8 symbols"))
A1(("Build Analysis<br/>2 symbols"))
A2(("CLI Engine<br/>2 symbols"))
A3(("Context Building<br/>1 symbol"))
A4(("LSP Enrichment<br/>1 symbol"))
AX(("1 smaller area<br/>1 symbol"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0,A1,A2,A3,A4 reached;
classDef tail fill:#EEF2F3,stroke:#9AA4A9,stroke-width:1px,color:#3A4247;
class AX tail;
Who knows this code — 3 people across 7 areas
Ownership is git history over each area's own files, weighted towards recent work (120-day half-life). Merge commits and bots are dropped, and you are dropped from your own PR. A name with no All 15 dependent symbols, grouped by areaDependency Graph — 8 symbols in 8 files
Build Analysis — 2 symbols in 2 files
CLI Engine — 2 symbols in 2 files
Context Building — 1 symbol in 1 file
LSP Enrichment — 1 symbol in 1 file
MCP Tools — 1 symbol in 1 file
Test signal per changed area — 1 –Reached = a node under a test path has a resolved edge into the changed symbol. It undercounts anything called indirectly — through a CLI, a spawned process or a dynamic import — so read a low ratio as “look here”, never as a coverage gate.
38 test suites also reference this code38 symbols, kept out of the diagram and the table so they cannot crowd out the areas a reviewer has to look at.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
feat(graph): add Julia language support (breadth tier)
Adds Julia to the breadth (generic tree-sitter) tier, following the Lua addition in #187: one registry row in
src/graph/generic.tsplussrc/graph/queries/julia.scm.The bundled
tree-sitter-wasmalready shipstree-sitter-julia.wasm, but that grammar has no upstreamtags.scm(only folds/highlights/indents/injections/locals), so the query is hand-written against its node vocabulary.call_expression/signaturecarry no named fields in this grammar, so patterns anchor on child position.Captured
@definition.function: long formfunction f(x) … end, short formf(x) = …, qualified methodsBase.show(io, x) = …/function Base.size(b) … end(last path segment is the name),whereclauses in both forms, macro-annotated one-liners (@inline g(x) = x), bodilessfunction f end, andmacro m(ex) … end.@definition.struct/.type:struct,mutable struct, parametrisedS{T},<: Super,abstract type,primitive type.@definition.module,@definition.constant(const K = 3).@reference.call: plain, qualified (Mod.f(x)) and broadcast (f.(x)) calls. A call on the left of=is a definition, on the right a reference; the extractor's existing definition-name guard prevents self-loops.@reference.class: the supertype in<: Super, so an abstract type that is only ever subtyped is not an orphan.Tests
test/generic-extract.test.ts:.jlroutes tojulia; a snippet covering the constructs above yields the expected definitions and a resolvedfit → helpercall edge.npx tsx --test test/generic-extract.test.ts test/supported-extensions.test.ts test/graph-languages.test.ts: 29/29 pass. Fullnpm test: 1216/1222 pass; the 5 failures (claude-shim-resolve×4,graph-refreshlock-release ×1) fail identically onmainin this environment.ask,callersandskeletonreturn correctfile:linespans.README language list and count updated (24).
🤖 Generated with Claude Code