Julia: functions with a `where` clause are dropped entirely
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
- #4127 di @rajatnagda45 — chiusa senza merge
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 25/100
Direzione di ricerca
Start with the Julia signature reader used by extract_julia and reproduce the issue with the provided where.jl example. Done means extraction includes a combine() node and its calls edge to merge_all; note that a linked pull request is already open.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version / commit
v0.9.77 (v8 @ 5c7b847)
Environment
macOS, Python 3.13, clean checkout of v8.
What happens
Any Julia method written with a where clause is silently dropped from the graph — no node, no defines edge, and none of the calls made from its body are recorded.
where constraints are everywhere in idiomatic generic Julia, so this erases a large fraction of a real codebase's functions.
Minimal reproduction
# where.jl
function combine(a::Vector{T}, b::Vector{T}) where {T<:Number}
merge_all(a, b)
end
function merge_all(a, b)
return a
end
from graphify.extract import extract_julia
r = extract_julia("where.jl")
print([n["label"] for n in r["nodes"]])
# -> ['where.jl', 'merge_all()'] # 'combine()' is missing
print([(e["source"], e["target"]) for e in r["edges"] if e["relation"] == "calls"])
# -> [] # combine -> merge_all lost
Expected vs actual
- Expected: a
combine()node with acallsedge tomerge_all. - Actual:
combineis absent and its body call vanishes.
Root cause
The signature reader only looks for a direct call_expression child of the signature node, but a where method wraps the call head in a where_expression, so the name is never found and the definition falls through.
A clean checkout of v8 reproduces it. Fix PR to follow.
- Lingua principale
- Python
- Stelle
- 124k
- Fork
- 11.9k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Graphify-Labs/graphify
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
Graphify-Labs/graphify#3763 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Graphify-Labs/graphify#3611 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Nix supportAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Graphify-Labs/graphify#3193 · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
Graphify-Labs/graphify#2871 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Graphify-Labs/graphify#2865 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Graphify-Labs/graphify
Issue simili
-
fix formatting of the sample database page of the docsForse già presa @Aaqibhafeezkhan l’ha presa oggi. Apertadocumentation good first issue help wanted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
chaoss/CollectOSS#544 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/plugin good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kestra-io/plugin-soda#137 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
ibm-granite/granite.build#504 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno