aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorFrizi <[email protected]>2019-11-24 16:36:30 +0000
committerFrizi <[email protected]>2019-11-24 16:45:30 +0000
commit66f04e6be54c47104877bff777b7042960d04393 (patch)
treeb616cf0f4c10015f1bd8394daa96cec9a67a04e9 /crates
parentac9ba5eb32073c16608acaa04324e7dc46d303d6 (diff)
Show missing struct fields in the error message
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_hir/src/diagnostics.rs7
-rw-r--r--crates/ra_hir/src/ty/tests.rs3
2 files changed, 8 insertions, 2 deletions
diff --git a/crates/ra_hir/src/diagnostics.rs b/crates/ra_hir/src/diagnostics.rs
index dafacba70..6db499e06 100644
--- a/crates/ra_hir/src/diagnostics.rs
+++ b/crates/ra_hir/src/diagnostics.rs
@@ -39,7 +39,12 @@ pub struct MissingFields {
39 39
40impl Diagnostic for MissingFields { 40impl Diagnostic for MissingFields {
41 fn message(&self) -> String { 41 fn message(&self) -> String {
42 "fill structure fields".to_string() 42 use std::fmt::Write;
43 let mut message = String::from("Missing structure fields:\n");
44 for field in &self.missed_fields {
45 write!(message, "- {}\n", field).unwrap();
46 }
47 message
43 } 48 }
44 fn source(&self) -> Source<SyntaxNodePtr> { 49 fn source(&self) -> Source<SyntaxNodePtr> {
45 Source { file_id: self.file, value: self.field_list.into() } 50 Source { file_id: self.file, value: self.field_list.into() }
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index 3209c66bd..98eb863cb 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -4832,7 +4832,8 @@ fn no_such_field_diagnostics() {
4832 4832
4833 assert_snapshot!(diagnostics, @r###" 4833 assert_snapshot!(diagnostics, @r###"
4834 "baz: 62": no such field 4834 "baz: 62": no such field
4835 "{\n foo: 92,\n baz: 62,\n }": fill structure fields 4835 "{\n foo: 92,\n baz: 62,\n }": Missing structure fields:
4836 - bar
4836 "### 4837 "###
4837 ); 4838 );
4838} 4839}