Rust: Mejorar el mensaje de error para los parens faltantes en la desestructuración de la tupla en el bucle for

Creado en 24 feb. 2018  ·  3Comentarios  ·  Fuente: rust-lang/rust

Dado:

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

rustc produce:

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

… Pero sería mejor si descubriera que el usuario supuestamente pretendía for (foo, bar) in ... , y diera un mensaje de error más específico.

Este es probablemente un error algo común proveniente de Python, que tiene una sintaxis similar para los bucles for pero permite omitir los paréntesis.

A-diagnostics

Comentario más útil

Si esto es algo inspirado en Python, entonces estos diagnósticos / recuperación idealmente deberían aplicarse también a let .

let a, b = (10, 11);

=>

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

Sospecho que incluso podemos implementar esta recuperación como "autotupling" en todos los contextos de expresión y patrón.

illegal a, b, c

=>

(a, b, c)

Todos 3 comentarios

Si esto es algo inspirado en Python, entonces estos diagnósticos / recuperación idealmente deberían aplicarse también a let .

let a, b = (10, 11);

=>

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

Sospecho que incluso podemos implementar esta recuperación como "autotupling" en todos los contextos de expresión y patrón.

illegal a, b, c

=>

(a, b, c)

: +1: No solo Python, esto también será útil para los usuarios de Go.

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

(He hecho algunos progresos en esto; próxima publicación de relaciones públicas)

¿Fue útil esta página
0 / 5 - 0 calificaciones