-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Feature Request: Add Hybrid LSP support for Julia #535
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestlanguage-requestRequest for new language supportRequest for new language supportparsing/qualityGraph extraction bugs, false positives, missing edgesGraph extraction bugs, false positives, missing edgespriority/backlogValuable contribution, lower scheduling urgency; review when maintainer capacity opens.Valuable contribution, lower scheduling urgency; review when maintainer capacity opens.
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestlanguage-requestRequest for new language supportRequest for new language supportparsing/qualityGraph extraction bugs, false positives, missing edgesGraph extraction bugs, false positives, missing edgespriority/backlogValuable contribution, lower scheduling urgency; review when maintainer capacity opens.Valuable contribution, lower scheduling urgency; review when maintainer capacity opens.
What problem does this solve?
I'm indexing Julia projects with codebase-memory-mcp. The tree-sitter layer
extracts functions/structs/modules fine, but cross-file call tracing is
broken because Julia uses multiple dispatch — method resolution depends on
argument types, not just function names.
Concrete example:
File A: src/models/user.jl
function process(data::DataFrame)
transform(data, :name => uppercase)
end
File B: src/api/handler.jl
function handle_request(req)
df = load_data(req)
process(df) # ← codebase-memory-mcp can't resolve this call
end
Without Hybrid LSP, the graph shows NO edge between handle_request and
process, because it can't infer that
dfis aDataFrameand thereforeprocess(::DataFrame)is the correct dispatch target.Impact:
(which is ALL Julia projects)
unused)
Proposed solution
Add Hybrid LSP pass for Julia that resolves:
using/importchains to build module dependency graphSuggested test repositories:
dispatch and parametric types (~15k LOC)
(https://github.com/SciML/DifferentialEquations.jl) — scientific computing,
complex module hierarchy
routing patterns similar to Go/TS Hybrid LSP implementations
multi-package structure
Priority: Flux.jl is the best starting point — small enough to iterate fast,
complex enough to exercise dispatch, parametric types, and macros.
Alternatives considered
Type-stripped fallback resolution:
When Hybrid LSP can't resolve types, fall back to matching function calls
by NAME ONLY (ignoring all argument types). For a call like
process(df),find ALL
processdefinitions in the project and create edges to ALL ofthem with a "unresolved_dispatch" flag.
Confirmations