Untagged variant accepts @as number literals that are the same JavaScript number
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #8965 di @cknitt — integrata
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 77/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
- Ambito
- compilers
Direzione di ricerca
Leggi la regola 6 e i relativi test in compiler/ml/UntaggedVariants.md, poi segui il controllo dei letterali duplicati che li confronta in base alla loro forma scritta. Verifica casi come 1 e 1.0, e 1 e 4294967297, rispetto ai rispettivi valori di runtime JavaScript. Il lavoro è concluso quando i valori JavaScript equivalenti vengono rifiutati come casi @as duplicati e i test coprono questi esempi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
An untagged variant accepts two @as number literals that are the same JavaScript number, when they are spelled differently.
@unboxed type t = | @as(1) A | @as(1.0) B
let name = v => switch v { | A => "A" | B => "B" }
@inline(never) let id = x => x
Console.log2(name(B), name(id(B)))
Output: B A. B is the number 1 at run time, so a dispatched B matches A, while the folded name(B) returns "B".
The same holds for @as(1) A | @as(4294967297) B, because int literals are emitted as 32-bit: name(id(B)) returns "A".
Expected: the declaration is rejected, as for two @as(1) cases, because the literals are equal as JavaScript values.
The duplicate-literal check compares literals by spelling. The rule and its tests are in compiler/ml/UntaggedVariants.md (rule 6), in #8952.
- Lingua principale
- OCaml
- Stelle
- 7.5k
- Fork
- 483
- Merge medio
- 20h
- PR unite (30g)
- 219
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la 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 rescript-lang/rescript
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
rescript-lang/rescript#9037 ·
I maintainer di solito rispondono entro 1 giorno
-
RFC: Temporal API bindingsAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
rescript-lang/rescript#9044 · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
rescript-lang/rescript#9006 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
rescript-lang/rescript#8997 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
rescript-lang/rescript#8994 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di rescript-lang/rescript
Issue simili
-
rust testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
NekomyaDev/nudge#275 ·
I maintainer di solito rispondono entro 1 giorno
-
crash lld:COFF
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
llvm/llvm-project#235970 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug scope:types
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
-
A-gca C-experience-report
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
rust-lang/project-const-generics#124 · 1 commento ·