microsoft / microsoft/TypeScript

Extend tsserver interface to allow refactoring failure reporting

Offen
#28,410 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: API Domain: LS: TSServer In Discussion Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

Search Terms

refactoring report failure fail

Suggestion

I would like a way to report refactoring failures similar to rename fail report ("You cannot rename this element").
This change improves transparency.

Edit: This might imply changes in VS Code language server extension as well. I'm not familiar with it though.

Use Cases

This would be useful to allow refactorings to initially show the refactoring, but when invoking it, an error message should be shown, instead of just not showing the refactoring. This would be confusing to the user.

Examples

Let's say we want to inline a variable, that is not initialized. This should not be possible. But it is still useful to show the refactoring initially, since the user may be confused why the option doesn't show up.
Then, if the user wants to invoke the refactoring, they get the error message "Cannot inline uninitialized variable."

let notInitialized; // should not allow inlining, but tell user why

foo(notInitialized);

Checklist

My suggestion meets these guidelines:

  • [*] This wouldn't be a breaking change in existing TypeScript / JavaScript code
  • [*] This wouldn't change the runtime behavior of existing JavaScript code
  • [*] This could be implemented without emitting different JS based on the types of the expressions
  • [*] This isn't a runtime feature (e.g. new expression-level syntax)

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

Beginne damit, die von tsserver für Refactorings verwendete Schnittstelle nachzuverfolgen und sie mit der bestehenden Meldung von Rename-Fehlern zu vergleichen. Prüfe, wie die Language-Server-Erweiterung von VS Code diese Antworten verarbeitet. Als erledigt gilt die Arbeit, wenn ein fehlgeschlagenes Refactoring einen Grund zurückgibt, den der Client anzeigen kann, anstatt den Fehler stillschweigend zu verbergen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
api, developer-experience
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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