microsoft / microsoft/TypeScript
False positive for "Unreachable code detected" for code following `switch`/`case` with `allowUnreachableCode: false`
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
🔎 Search Terms
"false positive allowUnreachableCode"
"allowUnreachableCode case statement"
"Unreachable code detected case statement"
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about
switch/case
⏯ Playground Link
💻 Code
type Foo = "bar" | "baz"
const fn = (value: Foo): number => {
switch(value) {
case "bar":
return 1;
case "baz":
return 2;
}
return assertNever("nope!");
}
🙁 Actual behavior
return assertNever("nope!");
is highlighted as "Unreachable code detected". The docs, however, state:
This does not affect errors on the basis of code which appears to be unreachable due to type analysis.
🙂 Expected behavior
No error. This should be the same as the other case form, the if form, and various similar constructs where even though it's allegedly exhaustive, that's just based off of type information (I would like to have a runtime assertion in this case).
Additional information about the issue
Possibly related to: https://github.com/microsoft/TypeScript/issues/18882
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 la reproduction liée dans TypeScript Playground et comparez l’exemple de switch/case avec les autres formes de case décrites dans le rapport. Examinez ensuite l’issue potentiellement liée #18882, puis vérifiez que l’assertion à l’exécution après le switch exhaustif n’est plus signalée comme inaccessible, tout en conservant le comportement existant concernant le code inaccessible.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100