about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDavid Wood <david@davidtw.co>2020-09-09 15:42:37 +0100
committerDavid Wood <david@davidtw.co>2020-09-10 18:51:56 +0100
commitc0894e72320a9b8a80f39fae1908d9e83a8b7277 (patch)
tree75f57c99fefb0eb33c2b29d1dc8035505c3f150d /src
parenta18b34d9793a88142c122f83fe53683f58f26ecc (diff)
downloadrust-c0894e72320a9b8a80f39fae1908d9e83a8b7277.tar.gz
rust-c0894e72320a9b8a80f39fae1908d9e83a8b7277.zip
typeck/expr: inaccessible private fields
This commit adjusts the missing field diagnostic logic for struct
expressions in typeck to improve the diagnostic when the missing
fields are inaccessible.

Signed-off-by: David Wood <david@davidtw.co>
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/issues/issue-76077.rs10
-rw-r--r--src/test/ui/issues/issue-76077.stderr8
2 files changed, 18 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-76077.rs b/src/test/ui/issues/issue-76077.rs
new file mode 100644
index 00000000000..1ecd37de2e1
--- /dev/null
+++ b/src/test/ui/issues/issue-76077.rs
@@ -0,0 +1,10 @@
+pub mod foo {
+    pub struct Foo {
+        you_cant_use_this_field: bool,
+    }
+}
+
+fn main() {
+    foo::Foo {};
+    //~^ ERROR cannot construct `Foo` with struct literal syntax due to inaccessible fields
+}
diff --git a/src/test/ui/issues/issue-76077.stderr b/src/test/ui/issues/issue-76077.stderr
new file mode 100644
index 00000000000..d834ec5e0ed
--- /dev/null
+++ b/src/test/ui/issues/issue-76077.stderr
@@ -0,0 +1,8 @@
+error: cannot construct `Foo` with struct literal syntax due to inaccessible fields
+  --> $DIR/issue-76077.rs:8:5
+   |
+LL |     foo::Foo {};
+   |     ^^^^^^^^
+
+error: aborting due to previous error
+