Exception analysis does not know the Temporal `fromStringOrThrow` functions

Ouverte Adaptée aux débutants
#9,182 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
ocaml
Domaine
devtools

Piste de recherche

La table des fonctions qui lèvent une exception se trouve dans analysis/reanalyze/src/exn_lib.ml, environ aux lignes 114-190, et le ticket mentionne les huit externals Temporal fromStringOrThrow ajoutés dans #9094 qui n'y figurent pas. Commence par lire comment les entrées *OrThrow existantes y sont écrites, puis exécute rescript-tools reanalyze -exception sur l'extrait de trois lignes du ticket. C'est terminé lorsque les trois appels Temporal sont signalés comme levant JsExn, et non seulement big.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
OCaml
Étoiles
7.5k
Forks
484
Merge moyen
17 h 2 min
PR mergées (30 j)
249

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de rescript-lang/rescript

Toutes les issues de rescript-lang/rescript

Issues similaires

Plus d'issues DevTools

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.