about summary refs log tree commit diff
diff options
context:
space:
mode:
authorReese Williams <reese@reesew.io>2021-02-14 13:14:11 -0500
committerReese Williams <reese@reesew.io>2021-02-14 13:15:37 -0500
commit7879099ad3ef6c84d8df96521c30b7bf4c573615 (patch)
tree7e0f91902509509f34936b59decac7ea70928d87
parent8a83c8f64f717f7cf569f589b42c6535591f8854 (diff)
downloadrust-7879099ad3ef6c84d8df96521c30b7bf4c573615.tar.gz
rust-7879099ad3ef6c84d8df96521c30b7bf4c573615.zip
Clarify error message and remove pretty printing in help suggestions.
-rw-r--r--compiler/rustc_typeck/src/check/pat.rs14
-rw-r--r--src/test/ui/issues/issue-17800.stderr4
-rw-r--r--src/test/ui/missing/missing-fields-in-struct-pattern.stderr4
-rw-r--r--src/test/ui/parser/recover-from-bad-variant.stderr4
-rw-r--r--src/test/ui/structs/struct-tuple-field-names.rs2
-rw-r--r--src/test/ui/structs/struct-tuple-field-names.stderr10
-rw-r--r--src/test/ui/type/type-check/issue-41314.stderr4
7 files changed, 25 insertions, 17 deletions
diff --git a/compiler/rustc_typeck/src/check/pat.rs b/compiler/rustc_typeck/src/check/pat.rs
index f16f8c9caf2..cfcd0d673d0 100644
--- a/compiler/rustc_typeck/src/check/pat.rs
+++ b/compiler/rustc_typeck/src/check/pat.rs
@@ -1253,17 +1253,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
                     self.tcx.sess,
                     pat.span,
                     E0769,
-                    "tuple variant `{}` uses a bare index in a struct pattern",
+                    "tuple variant `{}` written as struct variant",
                     path
                 );
                 err.span_suggestion(
-                    pat.span,
+                    qpath.span().shrink_to_hi().until(pat.span),
                     "use the tuple variant pattern syntax instead",
-                    format!(
-                        "{}({})",
-                        path,
-                        self.get_suggested_tuple_struct_pattern(fields, variant)
-                    ),
+                    format!("({})", self.get_suggested_tuple_struct_pattern(fields, variant)),
                     Applicability::MaybeIncorrect,
                 );
                 return Some(err);
@@ -1421,9 +1417,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
                 )
             };
             err.span_suggestion(
-                pat.span,
+                qpath.span().shrink_to_hi().until(pat.span),
                 "use the tuple variant pattern syntax instead",
-                format!("{}({})", path, sugg),
+                format!("({})", sugg),
                 appl,
             );
             return Some(err);
diff --git a/src/test/ui/issues/issue-17800.stderr b/src/test/ui/issues/issue-17800.stderr
index fc034a0cbf3..4f961823231 100644
--- a/src/test/ui/issues/issue-17800.stderr
+++ b/src/test/ui/issues/issue-17800.stderr
@@ -2,7 +2,9 @@ error[E0769]: tuple variant `MyOption::MySome` written as struct variant
   --> $DIR/issue-17800.rs:8:9
    |
 LL |         MyOption::MySome { x: 42 } => (),
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the tuple variant pattern syntax instead: `MyOption::MySome(42)`
+   |         ----------------^^^^^^^^^^
+   |         |
+   |         help: use the tuple variant pattern syntax instead: `(42)`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/missing/missing-fields-in-struct-pattern.stderr b/src/test/ui/missing/missing-fields-in-struct-pattern.stderr
index 6583524aad1..81d208e4bc3 100644
--- a/src/test/ui/missing/missing-fields-in-struct-pattern.stderr
+++ b/src/test/ui/missing/missing-fields-in-struct-pattern.stderr
@@ -2,7 +2,9 @@ error[E0769]: tuple variant `S` written as struct variant
   --> $DIR/missing-fields-in-struct-pattern.rs:4:12
    |
 LL |     if let S { a, b, c, d } = S(1, 2, 3, 4) {
-   |            ^^^^^^^^^^^^^^^^ help: use the tuple variant pattern syntax instead: `S(a, b, c, d)`
+   |            -^^^^^^^^^^^^^^^
+   |            |
+   |            help: use the tuple variant pattern syntax instead: `(a, b, c, d)`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/recover-from-bad-variant.stderr b/src/test/ui/parser/recover-from-bad-variant.stderr
index 89232a519d7..86086cf97ec 100644
--- a/src/test/ui/parser/recover-from-bad-variant.stderr
+++ b/src/test/ui/parser/recover-from-bad-variant.stderr
@@ -22,7 +22,9 @@ error[E0769]: tuple variant `Enum::Bar` written as struct variant
   --> $DIR/recover-from-bad-variant.rs:12:9
    |
 LL |         Enum::Bar { a, b } => {}
-   |         ^^^^^^^^^^^^^^^^^^ help: use the tuple variant pattern syntax instead: `Enum::Bar(a, b)`
+   |         ---------^^^^^^^^^
+   |         |
+   |         help: use the tuple variant pattern syntax instead: `(a, b)`
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/structs/struct-tuple-field-names.rs b/src/test/ui/structs/struct-tuple-field-names.rs
index 0ebbff75e59..7bd54af1dbe 100644
--- a/src/test/ui/structs/struct-tuple-field-names.rs
+++ b/src/test/ui/structs/struct-tuple-field-names.rs
@@ -6,7 +6,7 @@ fn main() {
     let x = E::S(1, 2.2);
     match x {
         E::S { 0, 1 } => {}
-        //~^ ERROR tuple variant `E::S` uses a bare index in a struct pattern [E0769]
+        //~^ ERROR tuple variant `E::S` written as struct variant [E0769]
     }
     let y = S(1, 2.2);
     match y {
diff --git a/src/test/ui/structs/struct-tuple-field-names.stderr b/src/test/ui/structs/struct-tuple-field-names.stderr
index 2021aa9d70e..80c6187cbbe 100644
--- a/src/test/ui/structs/struct-tuple-field-names.stderr
+++ b/src/test/ui/structs/struct-tuple-field-names.stderr
@@ -1,14 +1,18 @@
-error[E0769]: tuple variant `E::S` uses a bare index in a struct pattern
+error[E0769]: tuple variant `E::S` written as struct variant
   --> $DIR/struct-tuple-field-names.rs:8:9
    |
 LL |         E::S { 0, 1 } => {}
-   |         ^^^^^^^^^^^^^ help: use the tuple variant pattern syntax instead: `E::S(_, _)`
+   |         ----^^^^^^^^^
+   |         |
+   |         help: use the tuple variant pattern syntax instead: `(_, _)`
 
 error[E0769]: tuple variant `S` written as struct variant
   --> $DIR/struct-tuple-field-names.rs:13:9
    |
 LL |         S { } => {}
-   |         ^^^^^ help: use the tuple variant pattern syntax instead: `S(_, _)`
+   |         -^^^^
+   |         |
+   |         help: use the tuple variant pattern syntax instead: `(_, _)`
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/type/type-check/issue-41314.stderr b/src/test/ui/type/type-check/issue-41314.stderr
index bd4d2071c20..78c14d37518 100644
--- a/src/test/ui/type/type-check/issue-41314.stderr
+++ b/src/test/ui/type/type-check/issue-41314.stderr
@@ -2,7 +2,9 @@ error[E0769]: tuple variant `X::Y` written as struct variant
   --> $DIR/issue-41314.rs:7:9
    |
 LL |         X::Y { number } => {}
-   |         ^^^^^^^^^^^^^^^ help: use the tuple variant pattern syntax instead: `X::Y(number)`
+   |         ----^^^^^^^^^^^
+   |         |
+   |         help: use the tuple variant pattern syntax instead: `(number)`
 
 error: aborting due to previous error