Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Type printer collision between arity-specific function top and maximal explicit arrow

Aperta
#15,829 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
52/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
elixir
Ambito
compilers

Direzione di ricerca

Inizia in Module.Types.Descr e riproduci la collisione con fun(1), fun([none()], term()) e to_quoted_string/1. Segui il percorso del type-printer e confronta il suo output con equal?/2 e subtype?/2; il lavoro è completato quando i tipi distinti non vengono più stampati in modo identico, oppure quando il comportamento intenzionale è documentato.

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

Descrizione

Existing issue
  • I have searched existing issues and could not find a duplicate.
Elixir and Erlang/OTP versions

Erlang/OTP 28 [erts-16.4.0.1] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [jit]

Elixir 1.21.0-dev (469c844) (compiled with Erlang/OTP 28)

Operating system

any

Current behavior

fun(1) and fun([none()], term()) are distinct types, but both currently print as (none() -> term()).

import Module.Types.Descr

top = fun(1)
arrow = fun([none()], term())

to_quoted_string(top)
#=> "(none() -> term())"

to_quoted_string(arrow)
#=> "(none() -> term())"

equal?(top, arrow)
#=> false

subtype?(arrow, top)
#=> true

subtype?(top, arrow)
#=> false

empty?(opt_difference(top, arrow))
#=> false
Expected behavior

Type printer improved. Alternatively if this is a deliberate choice it should be noted in the code documentation

Lingua principale
Elixir
Stelle
26.7k
Fork
3.7k
Merge medio
8h 8m
PR unite (30g)
61

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di elixir-lang/elixir

Tutte le issue di elixir-lang/elixir

Issue simili

Altre issue su Elixir

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.