microsoft / microsoft/TypeScript

Disallow newline after `as` after function instantiation

Offen
#55,806 6 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: Parser Possible Improvement
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

🔎 Search Terms

as newline ASI function type parameters spec difference

🕗 Version & Regression Information
  • This is the behavior in every version I tried
⏯ Playground Link

https://www.typescriptlang.org/play?#code/CYUwxgNghgTiAEAzArgOzAFwJYHtVJxwB4AVAPgAoBKALnhIChRJYFUoBbEAZwAcowCAGLwA3vBAAPXjhgZ4GAJ68EAcxAYMIGPAC88KKkXwAvk3DQ48CBoPc6hxQwY35kvQRzwi8AEzwyOwYhADp1TW0GIA

💻 Code
let x = foo < 2 > as
F.getter
🙁 Actual behavior

It is parsed as

let x = foo<2> as F.getter;
🙂 Expected behavior

It should be parsed as

let x = (foo < 2) > as;
F.getter;
Additional information about the issue

The linked code is valid JavaScript code, and it would be great if tsc could parse as such.

I know that TS is not in general a syntactic superset of JavaScript, but both Babel and SWC already parse this example (when in TS mode) according to JS semantics. We could change our parsers, but it would be better if this ambiguity could be solved in tsc.

cc @kdy1

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere den Parsing-Unterschied mithilfe des verlinkten TypeScript Playground und des bereitgestellten Codebeispiels und verfolge anschließend, wie der TypeScript-Parser as über einen Zeilenumbruch nach der Instanziierung einer Funktion verarbeitet. Als abgeschlossen gilt die Arbeit, wenn das Beispiel dem erwarteten JavaScript/ASI-Parsing folgt und das bestehende TypeScript-Parsing-Verhalten weiterhin durch Tests abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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