microsoft / microsoft/TypeScript
Parser misinterprets async() calls in conditional expressions as async arrow functions
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
🔎 Search Terms
parser, async, conditional
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
No response
💻 Code
const a = true;
const b = 1;
function async(): number {
return b;
}
const first = a ? async() : 0;
// TS1005: '=>' expected.
const second = a ? async() : x => x;
// TS1005: ':' expected.
🙁 Actual behavior
The parser appears to interpret async() as the beginning of an async arrow function and the conditional separator as a return-type annotation.
The first case also produces a syntax diagnostic when parsed as JavaScript after removing the : number annotation. Node accepts and executes that JavaScript equivalent
🙂 Expected behavior
Both conditional expressions should parse successfully. async() is a call to the function named async, and the following colon separates the conditional’s branches.
Additional information about the issue
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire les deux exemples d’expressions conditionnelles dans le parseur TypeScript et comparez la manière dont async() est classé par rapport à une fonction fléchée async. Utilisez le correctif Oxc lié comme référence pour le comportement d’analyse syntaxique concerné. Le travail est considéré comme terminé lorsque les deux exemples sont analysés avec succès sans les diagnostics signalés, avec une couverture de régression pour les cas présentés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 68/100