Exception analysis does not know the Temporal `fromStringOrThrow` functions

Offen Anfängerfreundlich
#9,182 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
72/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
ocaml
Bereich
devtools

Rechercherichtung

Die Tabelle der werfenden Funktionen steht in analysis/reanalyze/src/exn_lib.ml, etwa in den Zeilen 114-190, und das Issue nennt die acht Temporal-Externals fromStringOrThrow, die mit #9094 hinzugekommen sind und dort fehlen. Lies zuerst, wie bestehende *OrThrow-Einträge dort geschrieben sind, und führe dann rescript-tools reanalyze -exception auf dem dreizeiligen Snippet aus dem Issue aus. Fertig ist, wenn alle drei Temporal-Aufrufe als JsExn werfend gemeldet werden, nicht nur big.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Found by differential semantic drift analysis from b123b7c3 to c10223e8.

What is broken

let big = () => BigInt.fromStringOrThrow("x")
let date = () => Temporal.PlainDate.fromStringOrThrow("x")
let dur = () => Temporal.Duration.fromStringOrThrow("x")

rescript-tools reanalyze -exception reports only big might throw JsExn. #9094 added eight fromStringOrThrow externals (Duration, Instant, PlainDate, PlainDateTime, PlainMonthDay, PlainTime, PlainYearMonth, ZonedDateTime); none is in the table of throwing library functions in exn_lib.ml, which lists every other stdlib *OrThrow function.

Temporal functions that throw without the OrThrow suffix (arithmetic out of range, invalid arguments to constructors) were not checked.

Possible cause (speculation only)

The table is maintained by hand next to the stdlib, and nothing checks that a new *OrThrow external has an entry.

🤖 Generated with Claude Code

Vorherrschende Sprache
OCaml
Sterne
7.5k
Forks
484
Ø Merge
17 Std. 2 Min.
Gemergte PRs (30 T.)
249

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus rescript-lang/rescript

Alle Issues in rescript-lang/rescript

Ähnliche Issues

Weitere Issues zu DevTools

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.