Rust: Améliorer le message d'erreur pour les parenthèses manquantes dans la déstructuration du tuple dans la boucle for

Créé le 24 févr. 2018  ·  3Commentaires  ·  Source: rust-lang/rust

Étant donné:

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

rustc produit :

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)] {}
   |            ^

… mais ce serait mieux s'il découvrait que l'utilisateur avait probablement l'intention de for (foo, bar) in ... , et donnait un message d'erreur plus spécifique.

Il s'agit probablement d'une erreur assez courante provenant de Python, qui a une syntaxe similaire pour les boucles for mais permet d'omettre les parenthèses.

A-diagnostics

Commentaire le plus utile

S'il s'agit de quelque chose d'inspiré de Python, ces diagnostics/récupération devraient idéalement s'appliquer également à let .

let a, b = (10, 11);

=>

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

Je soupçonne que nous pouvons même implémenter cette récupération en tant qu'"auto-tupling" dans tous les contextes d'expression et de modèle.

illegal a, b, c

=>

(a, b, c)

Tous les 3 commentaires

S'il s'agit de quelque chose d'inspiré de Python, ces diagnostics/récupération devraient idéalement s'appliquer également à let .

let a, b = (10, 11);

=>

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

Je soupçonne que nous pouvons même implémenter cette récupération en tant qu'"auto-tupling" dans tous les contextes d'expression et de modèle.

illegal a, b, c

=>

(a, b, c)

:+1: Pas seulement Python, cela sera également utile pour les utilisateurs de Go.

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

(J'ai fait quelques progrès à ce sujet ; PR à venir)

Cette page vous a été utile?
0 / 5 - 0 notes