about summary refs log tree commit diff
path: root/src/librustc_error_codes/error_codes
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-07-14 07:39:02 -0700
committerGitHub <noreply@github.com>2020-07-14 07:39:02 -0700
commitb9a0f5803ecd6dfd66dcd921e31d26a57faa8aad (patch)
tree40ace3824f6b6c659ab10b38a293b5b7011a2234 /src/librustc_error_codes/error_codes
parent79894dfbacf76ba7e670fc5bff2fa7f2f3c06597 (diff)
parent5daedea3dbeb8fb2639d3d142b008135f4fd2b43 (diff)
downloadrust-b9a0f5803ecd6dfd66dcd921e31d26a57faa8aad.tar.gz
rust-b9a0f5803ecd6dfd66dcd921e31d26a57faa8aad.zip
Rollup merge of #74173 - estebank:struct-pat-as-enum, r=petrochenkov
Detect tuple struct incorrectly used as struct pat

Subpart of #74005.

r? @petrochenkov
Diffstat (limited to 'src/librustc_error_codes/error_codes')
-rw-r--r--src/librustc_error_codes/error_codes/E0769.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/librustc_error_codes/error_codes/E0769.md b/src/librustc_error_codes/error_codes/E0769.md
new file mode 100644
index 00000000000..d1995be9899
--- /dev/null
+++ b/src/librustc_error_codes/error_codes/E0769.md
@@ -0,0 +1,39 @@
+A tuple struct or tuple variant was used in a pattern as if it were a
+struct or struct variant.
+
+Erroneous code example:
+
+```compile_fail,E0769
+enum E {
+    A(i32),
+}
+let e = E::A(42);
+match e {
+    E::A { number } => println!("{}", x),
+}
+```
+
+To fix this error, you can use the tuple pattern:
+
+```
+# enum E {
+#     A(i32),
+# }
+# let e = E::A(42);
+match e {
+    E::A(number) => println!("{}", number),
+}
+```
+
+Alternatively, you can also use the struct pattern by using the correct
+field names and binding them to new identifiers:
+
+```
+# enum E {
+#     A(i32),
+# }
+# let e = E::A(42);
+match e {
+    E::A { 0: number } => println!("{}", number),
+}
+```