Constants defined under a payload alias (YAML = Psych) are emitted under the alias name, rejected by sorbet >= 0.6.13550
I maintainer di solito rispondono entro 4 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 57/100
Direzione di ricerca
Start by reading Tapioca’s gem RBI generation path and how it resolves constant namespaces; the issue identifies the generated nested constant as the failing case. Reproduce with bundle exec tapioca gem yaml and bundle exec srb tc using the stated versions. Done means the generated RBI handles YAML::LOADER_VERSION without Sorbet error 4022 while the constant remains accessible as a String through YAML.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Since sorbet 0.6.13550 (sorbet/sorbet#10758; related: sorbet/sorbet#10767 for the net-http counterpart), Sorbet rejects any definition nested under a payload constant alias. The yaml gem RBI that tapioca generates now fails srb tc:
sorbet/rbi/gems/[email protected]:9: Redefining constant `YAML` as a class or module https://srb.help/4022
https://github.com/sorbet/sorbet/tree/b3a38a5fcb5cfeadd9031b3ddf513547f2c2f229/rbi/stdlib/yaml.rbi#L62: Previously defined as a static field here
62 |YAML = Psych # :nodoc:
Reproduction
- tapioca 0.20.0, sorbet 0.6.13550, Ruby 4.0.6,
yaml0.4.0 (a dependency ofpagy) bundle exec tapioca gem yamlgenerates:
# pkg:gem/yaml#lib/yaml.rb:69
YAML::LOADER_VERSION = T.let(T.unsafe(nil), String)
bundle exec srb tcreports the 4022 error above. Minimal case without tapioca: sorbet.run. sorbet 0.6.13544 accepts it.
The gem's lib/yaml.rb does YAML = Psych and later module YAML; LOADER_VERSION = "0.4.0"; end. At runtime YAML.equal?(Psych) is true, so the constant really lives on Psych.
Expected
When the namespace is an alias, tapioca should emit the constant under the alias target's real name (Psych::LOADER_VERSION = T.let(T.unsafe(nil), String)). Sorbet 0.6.13550 accepts that, and YAML::LOADER_VERSION still resolves to String. Alternatively, it could skip constants whose namespace is a payload alias.
Tapioca 0.20.0 already drops the module YAML; end line that older versions emitted. The same reasoning has to cover nested constants.
- Lingua principale
- Ruby
- Stelle
- 874
- Fork
- 166
- Merge medio
- 5g 12h
- PR unite (30g)
- 11
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
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 Shopify/tapioca
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Shopify/tapioca#2662 · 1 commento ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
I maintainer di solito rispondono entro 4 giorni
-
Improve `check-shims` performanceForse già presa @KaanOzkan l’ha presa 14 giorni fa. Aperta
Shopify/tapioca#2728 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
I maintainer di solito rispondono entro 4 giorni
-
Prepending a module can cause `tapioca dsl` to produce an untyped signatureForse già presa @KaanOzkan l’ha presa 49 giorni fa. Apertabug
Shopify/tapioca#2705 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di Shopify/tapioca
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
ETQ admin, le select de condition d'une annotation répétable liste les champs publics deux foisAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
demarche-numerique/demarche.numerique.gouv.fr#14301 ·
I maintainer di solito rispondono entro 1 giorno
-
Wrong permissions for sqliteAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
voxpupuli/puppet-powerdns#251 ·
-
needs verification
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 6 giorni