From e55e6da13adb41d84a53927b9bf02dc03fd2a33a Mon Sep 17 00:00:00 2001
From: Edwin Cheng <edwin0cheng@gmail.com>
Date: Wed, 8 Jan 2020 02:08:17 +0800
Subject: Reject tuple index for missing fields assist

---
 crates/ra_ide/src/diagnostics.rs | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'crates/ra_ide')

diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs
index c50a70d99..3264f8f80 100644
--- a/crates/ra_ide/src/diagnostics.rs
+++ b/crates/ra_ide/src/diagnostics.rs
@@ -66,6 +66,14 @@ pub(crate) fn diagnostics(db: &RootDatabase, file_id: FileId) -> Vec<Diagnostic>
     .on::<hir::diagnostics::MissingFields, _>(|d| {
         let mut field_list = d.ast(db);
         for f in d.missed_fields.iter() {
+            // Note that although we could add a diagnostics to
+            // fill the missing tuple field, e.g :
+            // `struct A(usize);`
+            // `let a = A { 0: () }`
+            // but it is uncommon usage and it should not be encouraged.
+            if f.as_tuple_index().is_some() {
+                continue;
+            }
             let field = make::record_field(make::name_ref(&f.to_string()), Some(make::expr_unit()));
             field_list = field_list.append_field(&field);
         }
-- 
cgit v1.2.3