Rust: Perbaiki pesan kesalahan untuk parens yang hilang dalam destruktur Tuple di for loop

Dibuat pada 24 Feb 2018  ·  3Komentar  ·  Sumber: rust-lang/rust

Diberikan:

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

rustc menghasilkan:

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

…tetapi akan lebih baik jika diketahui bahwa pengguna mungkin bermaksud for (foo, bar) in ... , dan memberikan pesan kesalahan yang lebih spesifik.

Ini mungkin kesalahan umum yang berasal dari Python, yang memiliki sintaks serupa untuk for loop tetapi memungkinkan menghilangkan tanda kurung.

A-diagnostics

Komentar yang paling membantu

Jika ini adalah sesuatu yang terinspirasi oleh Python, maka diagnostik/pemulihan ini idealnya juga berlaku untuk let .

let a, b = (10, 11);

=>

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

Saya menduga kita bahkan dapat mengimplementasikan pemulihan ini sebagai "auto-tupling" di semua ekspresi dan konteks pola.

illegal a, b, c

=>

(a, b, c)

Semua 3 komentar

Jika ini adalah sesuatu yang terinspirasi oleh Python, maka diagnostik/pemulihan ini idealnya juga berlaku untuk let .

let a, b = (10, 11);

=>

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

Saya menduga kita bahkan dapat mengimplementasikan pemulihan ini sebagai "auto-tupling" di semua ekspresi dan konteks pola.

illegal a, b, c

=>

(a, b, c)

:+1: Bukan hanya Python, ini juga akan membantu pengguna Go.

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

(Saya telah membuat beberapa kemajuan dalam hal ini; PR akan datang)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat