Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Emitted JS / Gentype double-escapes output

Ouverte
#8,088 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é
3/5
Temps estimé
1-2 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
javascript, ocaml, typescript
Domaine
compilers

Piste de recherche

Commencez dans compiler/gentype/TranslateTypeDeclarations.ml, autour de la ligne 48, puis examinez les cas @as dans tests/gentype_tests/typescript-react-example/src/Records.res ainsi que leurs sorties générées .gen.tsx et .res.js. Exécutez le test gentype existant et reproduisez les deux cas de guillemets échappés. C’est terminé lorsque le JavaScript et le TypeScript générés n’échappent pas deux fois la valeur et que le parser accepte l’identifiant exotique.

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

Description

Thank you for filing! Check list:

  • Is it a bug? Usage questions should often be asked in the forum instead.
  • Concise, focused, friendly issue title & description.
  • A minimal, reproducible example.
  • OS and browser versions, if relevant.
  • Is it already fixed in master? Instructions

When using the @as attribute with a value containing escape sequences (e.g., @as("with\"dquote")), the generated JavaScript incorrectly double-escapes the string. Additionally the parser can't handle exotic identifiers with a \".

I found this while looking at #8086 and removing String.escaped from this line:

https://github.com/rescript-lang/rescript/blob/14721cb26f727e20fa834dbcce28fb439ad2e006/compiler/gentype/TranslateTypeDeclarations.ml#L48

This existing test with an escaped double-quote \" in the @as annotation

https://github.com/rescript-lang/rescript/blob/14721cb26f727e20fa834dbcce28fb439ad2e006/tests/gentype_tests/typescript-react-example/src/Records.res#L125-L139

Results it being double-escaped in the generated typescript types and javascript:

https://github.com/rescript-lang/rescript/blob/14721cb26f727e20fa834dbcce28fb439ad2e006/tests/gentype_tests/typescript-react-example/src/Records.gen.tsx#L51-L58

https://github.com/rescript-lang/rescript/blob/14721cb26f727e20fa834dbcce28fb439ad2e006/tests/gentype_tests/typescript-react-example/src/Records.res.js#L106-L115


There's also a parser bug:

https://github.com/illusionalsagacity/rescript-compiler/blob/3293dcb812e416afccb0900df933bbbb533578f2/tests/gentype_tests/typescript-react-example/src/Records.res#L125-L142

Error in @tests/gentype-react-example:

  Syntax error!
  /rescript-compiler/tests/gentype_tests/typescript-react-example/src/Records.res:135:11-17

  133 ┆ @as("with\"dquote")
  134 ┆ withDQuote: string,
  135 ┆ \"with\"dquote2": string,
  136 ┆ @as("with'squote")
  137 ┆ withSQuote: string,

  Did you forget a `,` here?
Langage dominant
OCaml
Étoiles
7.5k
Forks
485
Merge moyen
1 j 6 h
PR mergées (30 j)
52

Préparer son environnement

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 Compilers

Recevez les nouvelles issues par e-mail

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