Rust: Verbessern Sie die Fehlermeldung für fehlende Parens in der Tupel-Destrukturierung in der for-Schleife

Erstellt am 24. Feb. 2018  ·  3Kommentare  ·  Quelle: rust-lang/rust

Gegeben:

    for foo, bar in [(1, 2), (3, 4)] {}

rustc produziert:

error: missing `in` in `for` loop
  --> src/main.rs:44:12
   |
44 |     for foo, bar in [(1, 2)] {}
   |            ^ help: try adding `in` here

error: expected expression, found `,`
  --> src/main.rs:44:12
   |
44 |     for foo, bar in [(1, 2)] {}
   |            ^

…aber es wäre besser, wenn es herausfindet, dass der Benutzer vermutlich for (foo, bar) in ... beabsichtigt hat, und eine spezifischere Fehlermeldung ausgibt.

Dies ist wahrscheinlich ein etwas häufiger Fehler, der von Python kommt, das eine ähnliche Syntax für for Schleifen hat, aber das Weglassen der Klammern ermöglicht.

A-diagnostics

Hilfreichster Kommentar

Wenn dies von Python inspiriert ist, sollten diese Diagnosen/Wiederherstellungen idealerweise auch für let .

let a, b = (10, 11);

=>

let (a, b) = (10, 11);

Ich vermute, wir können diese Wiederherstellung sogar als "Auto-Tupling" in allen Ausdrucks- und Musterkontexten implementieren.

illegal a, b, c

=>

(a, b, c)

Alle 3 Kommentare

Wenn dies von Python inspiriert ist, sollten diese Diagnosen/Wiederherstellungen idealerweise auch für let .

let a, b = (10, 11);

=>

let (a, b) = (10, 11);

Ich vermute, wir können diese Wiederherstellung sogar als "Auto-Tupling" in allen Ausdrucks- und Musterkontexten implementieren.

illegal a, b, c

=>

(a, b, c)

:+1: Nicht nur Python, dies wird auch für Go-Benutzer hilfreich sein.

for k, v := range myMap {
    x, err = /* ... */
}

(Ich habe diesbezüglich einige Fortschritte gemacht; PR in Kürze)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen