bitwalker / bitwalker/libgraph

Wrong return value in @spec for Graph.in_edges().

Aperta
#87 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Elixir
Stelle
571
Fork
76
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hello. As I understand from the documentation, `Graph.in_edges()` is supposed to return "a list of `Graph.Edge`". However, the [`@spec`](https://github.com/bitwalker/libgraph/blob/main/lib/graph.ex#L2122C3-L2122C40) declares that only one edge is returned.
```elixir
@spec in_edges(t, vertex) :: Edge.t()
```

This is causing Dialyzer some discomfort:
```
Line 1193 Column 9: The pattern [Edge] can never match the type #{'__struct__':='Elixir.Graph.Edge', 'label':=_, 'v1':=_, 'v2':=_, 'weight':=number()}
Line 1194 Column 9: The pattern [Edge | More] can never match the type #{'__struct__':='Elixir.Graph.Edge', 'label':=_, 'v1':=_, 'v2':=_, 'weight':=number()}
```

Note that I'm using libgraph from an Erlang module, but of course, that shouldn't matter. I'm using version 0.16.0 of the library.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia in lib/graph.ex, intorno alla riga 2122, dove è dichiarato il @spec di Graph.in_edges/2, e confrontalo con il valore restituito documentato e gli avvisi di Dialyzer nell'issue. Il lavoro è completato quando la specifica del tipo corrisponde al valore restituito sotto forma di lista dalla funzione e la discrepanza di Dialyzer segnalata non viene più prodotta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
elixir
Ambito
data
Tipo di issue
Bug
Difficoltà
1/5
Tempo stimato
Meno di un'ora
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.