about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_borrowck/borrowck/mod.rs2
-rw-r--r--src/librustc_errors/diagnostic.rs12
-rw-r--r--src/librustc_errors/emitter.rs2
-rw-r--r--src/librustc_resolve/lib.rs20
-rw-r--r--src/librustc_resolve/macros.rs5
-rw-r--r--src/librustc_typeck/check/cast.rs4
-rw-r--r--src/librustc_typeck/check/op.rs2
-rw-r--r--src/libsyntax/parse/parser.rs4
-rw-r--r--src/test/compile-fail/issue-35675.rs6
-rw-r--r--src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs23
-rw-r--r--src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs23
-rw-r--r--src/test/ui-fulldeps/auxiliary/derive-clona.rs23
-rw-r--r--src/test/ui-fulldeps/auxiliary/derive-foo.rs23
-rw-r--r--src/test/ui-fulldeps/resolve-error.rs (renamed from src/test/compile-fail-fulldeps/proc-macro/resolve-error.rs)17
-rw-r--r--src/test/ui-fulldeps/resolve-error.stderr62
-rw-r--r--src/test/ui/cast-to-unsized-trait-object-suggestion.rs (renamed from src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs)6
-rw-r--r--src/test/ui/cast-to-unsized-trait-object-suggestion.stderr18
-rw-r--r--src/test/ui/issue-35675.rs51
-rw-r--r--src/test/ui/issue-35675.stderr51
-rw-r--r--src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr2
-rw-r--r--src/test/ui/macros/macro-name-typo.rs (renamed from src/test/compile-fail/macro-name-typo.rs)2
-rw-r--r--src/test/ui/macros/macro-name-typo.stderr8
-rw-r--r--src/test/ui/macros/macro_undefined.rs (renamed from src/test/compile-fail/macro_undefined.rs)4
-rw-r--r--src/test/ui/macros/macro_undefined.stderr16
-rw-r--r--src/test/ui/mismatched_types/issue-19109.stderr2
-rw-r--r--src/test/ui/resolve-error.stderr62
-rw-r--r--src/test/ui/resolve/issue-14254.stderr38
-rw-r--r--src/test/ui/resolve/issue-2356.stderr12
-rw-r--r--src/test/ui/resolve/resolve-assoc-suggestions.stderr6
-rw-r--r--src/test/ui/resolve/resolve-speculative-adjustment.stderr4
-rw-r--r--src/test/ui/resolve/token-error-correct-3.stderr2
-rw-r--r--src/test/ui/resolve/unresolved_static_type_field.stderr2
-rw-r--r--src/test/ui/span/issue-39018.stderr2
-rw-r--r--src/test/ui/span/suggestion-non-ascii.stderr2
-rw-r--r--src/test/ui/suggestions/tuple-float-index.stderr2
-rw-r--r--src/test/ui/type-check/assignment-in-if.stderr8
36 files changed, 438 insertions, 90 deletions
diff --git a/src/librustc_borrowck/borrowck/mod.rs b/src/librustc_borrowck/borrowck/mod.rs
index 3be7c43cab9..1bfc5805bc8 100644
--- a/src/librustc_borrowck/borrowck/mod.rs
+++ b/src/librustc_borrowck/borrowck/mod.rs
@@ -991,7 +991,7 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> {
             .span_suggestion(err.span,
                              &format!("to force the closure to take ownership of {} \
                                        (and any other referenced variables), \
-                                       use the `move` keyword, as shown:",
+                                       use the `move` keyword",
                                        cmt_path_or_string),
                              suggestion)
             .emit();
diff --git a/src/librustc_errors/diagnostic.rs b/src/librustc_errors/diagnostic.rs
index d7c21127474..ee07b6e909f 100644
--- a/src/librustc_errors/diagnostic.rs
+++ b/src/librustc_errors/diagnostic.rs
@@ -211,6 +211,18 @@ impl Diagnostic {
 
     /// Prints out a message with a suggested edit of the code.
     ///
+    /// In case of short messages and a simple suggestion,
+    /// rustc displays it as a label like
+    ///
+    /// "try adding parentheses: `(tup.0).1`"
+    ///
+    /// The message
+    /// * should not end in any punctuation (a `:` is added automatically)
+    /// * should not be a question
+    /// * should not contain any parts like "the following", "as shown"
+    /// * may look like "to do xyz, use" or "to do xyz, use abc"
+    /// * may contain a name of a function, variable or type, but not whole expressions
+    ///
     /// See `diagnostic::CodeSuggestion` for more information.
     pub fn span_suggestion(&mut self, sp: Span, msg: &str, suggestion: String) -> &mut Self {
         self.suggestions.push(CodeSuggestion {
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs
index 2aea6d125f2..3e8bd093f4f 100644
--- a/src/librustc_errors/emitter.rs
+++ b/src/librustc_errors/emitter.rs
@@ -51,7 +51,7 @@ impl Emitter for EmitterWriter {
                     // This substitution is only removal, don't show it
                     format!("help: {}", sugg.msg)
                 } else {
-                    format!("help: {} `{}`", sugg.msg, substitution)
+                    format!("help: {}: `{}`", sugg.msg, substitution)
                 };
                 primary_span.push_span_label(sugg.substitution_spans().next().unwrap(), msg);
             } else {
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 7754cd7366e..49e6929aeef 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -2409,13 +2409,15 @@ impl<'a> Resolver<'a> {
                     .map(|suggestion| import_candidate_to_paths(&suggestion)).collect::<Vec<_>>();
                 enum_candidates.sort();
                 for (sp, variant_path, enum_path) in enum_candidates {
-                    let msg = format!("there is an enum variant `{}`, did you mean to use `{}`?",
-                                      variant_path,
-                                      enum_path);
                     if sp == DUMMY_SP {
+                        let msg = format!("there is an enum variant `{}`, \
+                                        try using `{}`?",
+                                        variant_path,
+                                        enum_path);
                         err.help(&msg);
                     } else {
-                        err.span_help(sp, &msg);
+                        err.span_suggestion(span, "you can try using the variant's enum",
+                                            enum_path);
                     }
                 }
             }
@@ -2424,18 +2426,20 @@ impl<'a> Resolver<'a> {
                     let self_is_available = this.self_value_is_available(path[0].ctxt, span);
                     match candidate {
                         AssocSuggestion::Field => {
-                            err.span_label(span, format!("did you mean `self.{}`?", path_str));
+                            err.span_suggestion(span, "try",
+                                                format!("self.{}", path_str));
                             if !self_is_available {
                                 err.span_label(span, format!("`self` value is only available in \
                                                                methods with `self` parameter"));
                             }
                         }
                         AssocSuggestion::MethodWithSelf if self_is_available => {
-                            err.span_label(span, format!("did you mean `self.{}(...)`?",
-                                                           path_str));
+                            err.span_suggestion(span, "try",
+                                                format!("self.{}", path_str));
                         }
                         AssocSuggestion::MethodWithSelf | AssocSuggestion::AssocItem => {
-                            err.span_label(span, format!("did you mean `Self::{}`?", path_str));
+                            err.span_suggestion(span, "try",
+                                                format!("Self::{}", path_str));
                         }
                     }
                     return err;
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs
index 0fbc596f2e1..a993aca92dd 100644
--- a/src/librustc_resolve/macros.rs
+++ b/src/librustc_resolve/macros.rs
@@ -658,9 +658,10 @@ impl<'a> Resolver<'a> {
         if let Some(suggestion) = suggestion {
             if suggestion != name {
                 if let MacroKind::Bang = kind {
-                    err.help(&format!("did you mean `{}!`?", suggestion));
+                    err.span_suggestion(span, "you could try the macro",
+                                        format!("{}!", suggestion));
                 } else {
-                    err.help(&format!("did you mean `{}`?", suggestion));
+                    err.span_suggestion(span, "try", suggestion.to_string());
                 }
             } else {
                 err.help("have you added the `#[macro_use]` on the module/import?");
diff --git a/src/librustc_typeck/check/cast.rs b/src/librustc_typeck/check/cast.rs
index 7bd24c939ca..b3f62de5b57 100644
--- a/src/librustc_typeck/check/cast.rs
+++ b/src/librustc_typeck/check/cast.rs
@@ -253,7 +253,7 @@ impl<'a, 'gcx, 'tcx> CastCheck<'tcx> {
                     match fcx.tcx.sess.codemap().span_to_snippet(self.cast_span) {
                         Ok(s) => {
                             err.span_suggestion(self.cast_span,
-                                                "try casting to a reference instead:",
+                                                "try casting to a reference instead",
                                                 format!("&{}{}", mtstr, s));
                         }
                         Err(_) => {
@@ -272,7 +272,7 @@ impl<'a, 'gcx, 'tcx> CastCheck<'tcx> {
                 match fcx.tcx.sess.codemap().span_to_snippet(self.cast_span) {
                     Ok(s) => {
                         err.span_suggestion(self.cast_span,
-                                            "try casting to a `Box` instead:",
+                                            "try casting to a `Box` instead",
                                             format!("Box<{}>", s));
                     }
                     Err(_) => span_help!(err, self.cast_span, "did you mean `Box<{}>`?", tstr),
diff --git a/src/librustc_typeck/check/op.rs b/src/librustc_typeck/check/op.rs
index 4d69b37b113..032e37a34a8 100644
--- a/src/librustc_typeck/check/op.rs
+++ b/src/librustc_typeck/check/op.rs
@@ -320,7 +320,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
                                   from a string reference. String concatenation \
                                   appends the string on the right to the string \
                                   on the left and may require reallocation. This \
-                                  requires ownership of the string on the left."), suggestion);
+                                  requires ownership of the string on the left"), suggestion);
                     is_string_addition = true;
                 }
 
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 74b2ea1df32..90d9ae383a4 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -1490,7 +1490,7 @@ impl<'a> Parser<'a> {
                     s.print_bounds(" +", &bounds)?;
                     s.pclose()
                 });
-                err.span_suggestion(sum_span, "try adding parentheses:", sum_with_parens);
+                err.span_suggestion(sum_span, "try adding parentheses", sum_with_parens);
             }
             TyKind::Ptr(..) | TyKind::BareFn(..) => {
                 err.span_label(sum_span, "perhaps you forgot parentheses?");
@@ -5280,7 +5280,7 @@ impl<'a> Parser<'a> {
 `pub(in path::to::module)`: visible only on the specified path"##;
                 let path = self.parse_path(PathStyle::Mod)?;
                 let path_span = self.prev_span;
-                let help_msg = format!("make this visible only to module `{}` with `in`:", path);
+                let help_msg = format!("make this visible only to module `{}` with `in`", path);
                 self.expect(&token::CloseDelim(token::Paren))?;  // `)`
                 let mut err = self.span_fatal_help(path_span, msg, suggestion);
                 err.span_suggestion(path_span, &help_msg, format!("in {}", path));
diff --git a/src/test/compile-fail/issue-35675.rs b/src/test/compile-fail/issue-35675.rs
index 001c1f2eddc..c09e56cbc5b 100644
--- a/src/test/compile-fail/issue-35675.rs
+++ b/src/test/compile-fail/issue-35675.rs
@@ -12,14 +12,13 @@
 enum Fruit { //~ HELP possible candidate is found in another module, you can import it into scope
     //~^ HELP possible candidate is found in another module, you can import it into scope
     Apple(i64),
-    //~^ HELP there is an enum variant `Fruit::Apple`, did you mean to use `Fruit`?
-    //~| HELP there is an enum variant `Fruit::Apple`, did you mean to use `Fruit`?
     Orange(i64),
 }
 
 fn should_return_fruit() -> Apple {
     //~^ ERROR cannot find type `Apple` in this scope
     //~| NOTE not found in this scope
+    //~| HELP you can try using the variant's enum
     Apple(5)
     //~^ ERROR cannot find function `Apple` in this scope
     //~| NOTE not found in this scope
@@ -27,6 +26,7 @@ fn should_return_fruit() -> Apple {
 
 fn should_return_fruit_too() -> Fruit::Apple {
     //~^ ERROR expected type, found variant `Fruit::Apple`
+    //~| HELP you can try using the variant's enum
     //~| NOTE not a type
     Apple(5)
     //~^ ERROR cannot find function `Apple` in this scope
@@ -43,6 +43,7 @@ fn foo() -> Ok {
 
 fn bar() -> Variant3 {
     //~^ ERROR cannot find type `Variant3` in this scope
+    //~| HELP you can try using the variant's enum
     //~| NOTE not found in this scope
 }
 
@@ -61,7 +62,6 @@ mod x {
         Variant1,
         Variant2(),
         Variant3(usize),
-        //~^ HELP there is an enum variant `x::Enum::Variant3`, did you mean to use `x::Enum`?
         Variant4 {},
     }
 }
diff --git a/src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs b/src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs
new file mode 100644
index 00000000000..db0c19e96f8
--- /dev/null
+++ b/src/test/ui-fulldeps/auxiliary/attr_proc_macro.rs
@@ -0,0 +1,23 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// force-host
+// no-prefer-dynamic
+#![feature(proc_macro)]
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro_attribute]
+pub fn attr_proc_macro(_: TokenStream, input: TokenStream) -> TokenStream {
+    input
+}
diff --git a/src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs b/src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs
new file mode 100644
index 00000000000..89ac11b309d
--- /dev/null
+++ b/src/test/ui-fulldeps/auxiliary/bang_proc_macro.rs
@@ -0,0 +1,23 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// force-host
+// no-prefer-dynamic
+#![feature(proc_macro)]
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro]
+pub fn bang_proc_macro(input: TokenStream) -> TokenStream {
+    input
+}
diff --git a/src/test/ui-fulldeps/auxiliary/derive-clona.rs b/src/test/ui-fulldeps/auxiliary/derive-clona.rs
new file mode 100644
index 00000000000..719fbdb15ef
--- /dev/null
+++ b/src/test/ui-fulldeps/auxiliary/derive-clona.rs
@@ -0,0 +1,23 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// force-host
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro_derive(Clona)]
+pub fn derive_clonea(input: TokenStream) -> TokenStream {
+    "".parse().unwrap()
+}
diff --git a/src/test/ui-fulldeps/auxiliary/derive-foo.rs b/src/test/ui-fulldeps/auxiliary/derive-foo.rs
new file mode 100644
index 00000000000..64dcf72ba20
--- /dev/null
+++ b/src/test/ui-fulldeps/auxiliary/derive-foo.rs
@@ -0,0 +1,23 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// force-host
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro_derive(FooWithLongName)]
+pub fn derive_foo(input: TokenStream) -> TokenStream {
+    "".parse().unwrap()
+}
diff --git a/src/test/compile-fail-fulldeps/proc-macro/resolve-error.rs b/src/test/ui-fulldeps/resolve-error.rs
index ddd8631f02e..dfaa1d7a32e 100644
--- a/src/test/compile-fail-fulldeps/proc-macro/resolve-error.rs
+++ b/src/test/ui-fulldeps/resolve-error.rs
@@ -35,46 +35,29 @@ macro_rules! attr_proc_mac {
 }
 
 #[derive(FooWithLongNan)]
-//~^ ERROR cannot find derive macro `FooWithLongNan` in this scope
-//~^^ HELP did you mean `FooWithLongName`?
 struct Foo;
 
 #[attr_proc_macra]
-//~^ ERROR cannot find attribute macro `attr_proc_macra` in this scope
-//~^^ HELP did you mean `attr_proc_macro`?
 struct Bar;
 
 #[FooWithLongNan]
-//~^ ERROR cannot find attribute macro `FooWithLongNan` in this scope
 struct Asdf;
 
 #[derive(Dlone)]
-//~^ ERROR cannot find derive macro `Dlone` in this scope
-//~^^ HELP did you mean `Clone`?
 struct A;
 
 #[derive(Dlona)]
-//~^ ERROR cannot find derive macro `Dlona` in this scope
-//~^^ HELP did you mean `Clona`?
 struct B;
 
 #[derive(attr_proc_macra)]
-//~^ ERROR cannot find derive macro `attr_proc_macra` in this scope
 struct C;
 
 fn main() {
     FooWithLongNama!();
-    //~^ ERROR cannot find macro `FooWithLongNama!` in this scope
-    //~^^ HELP did you mean `FooWithLongNam!`?
 
     attr_proc_macra!();
-    //~^ ERROR cannot find macro `attr_proc_macra!` in this scope
-    //~^^ HELP did you mean `attr_proc_mac!`?
 
     Dlona!();
-    //~^ ERROR cannot find macro `Dlona!` in this scope
 
     bang_proc_macrp!();
-    //~^ ERROR cannot find macro `bang_proc_macrp!` in this scope
-    //~^^ HELP did you mean `bang_proc_macro!`?
 }
diff --git a/src/test/ui-fulldeps/resolve-error.stderr b/src/test/ui-fulldeps/resolve-error.stderr
new file mode 100644
index 00000000000..754f6bc4f1c
--- /dev/null
+++ b/src/test/ui-fulldeps/resolve-error.stderr
@@ -0,0 +1,62 @@
+error: cannot find derive macro `FooWithLongNan` in this scope
+  --> $DIR/resolve-error.rs:37:10
+   |
+37 | #[derive(FooWithLongNan)]
+   |          ^^^^^^^^^^^^^^ help: try: `FooWithLongName`
+
+error: cannot find attribute macro `attr_proc_macra` in this scope
+  --> $DIR/resolve-error.rs:40:3
+   |
+40 | #[attr_proc_macra]
+   |   ^^^^^^^^^^^^^^^ help: try: `attr_proc_macro`
+
+error: cannot find attribute macro `FooWithLongNan` in this scope
+  --> $DIR/resolve-error.rs:43:3
+   |
+43 | #[FooWithLongNan]
+   |   ^^^^^^^^^^^^^^
+
+error: cannot find derive macro `Dlone` in this scope
+  --> $DIR/resolve-error.rs:46:10
+   |
+46 | #[derive(Dlone)]
+   |          ^^^^^ help: try: `Clone`
+
+error: cannot find derive macro `Dlona` in this scope
+  --> $DIR/resolve-error.rs:49:10
+   |
+49 | #[derive(Dlona)]
+   |          ^^^^^ help: try: `Clona`
+
+error: cannot find derive macro `attr_proc_macra` in this scope
+  --> $DIR/resolve-error.rs:52:10
+   |
+52 | #[derive(attr_proc_macra)]
+   |          ^^^^^^^^^^^^^^^
+
+error: cannot find macro `FooWithLongNama!` in this scope
+  --> $DIR/resolve-error.rs:56:5
+   |
+56 |     FooWithLongNama!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `FooWithLongNam!`
+
+error: cannot find macro `attr_proc_macra!` in this scope
+  --> $DIR/resolve-error.rs:58:5
+   |
+58 |     attr_proc_macra!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `attr_proc_mac!`
+
+error: cannot find macro `Dlona!` in this scope
+  --> $DIR/resolve-error.rs:60:5
+   |
+60 |     Dlona!();
+   |     ^^^^^
+
+error: cannot find macro `bang_proc_macrp!` in this scope
+  --> $DIR/resolve-error.rs:62:5
+   |
+62 |     bang_proc_macrp!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `bang_proc_macro!`
+
+error: aborting due to 10 previous errors
+
diff --git a/src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs b/src/test/ui/cast-to-unsized-trait-object-suggestion.rs
index d18746cdf0b..c7934547982 100644
--- a/src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs
+++ b/src/test/ui/cast-to-unsized-trait-object-suggestion.rs
@@ -10,11 +10,5 @@
 
 fn main() {
     &1 as Send;
-    //~^ ERROR cast to unsized type
-    //~| HELP try casting to a reference instead:
-    //~| SUGGESTION &1 as &Send;
     Box::new(1) as Send;
-    //~^ ERROR cast to unsized type
-    //~| HELP try casting to a `Box` instead:
-    //~| SUGGESTION Box::new(1) as Box<Send>;
 }
diff --git a/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr b/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr
new file mode 100644
index 00000000000..4d4eb7b4ecf
--- /dev/null
+++ b/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr
@@ -0,0 +1,18 @@
+error[E0620]: cast to unsized type: `&{integer}` as `std::marker::Send`
+  --> $DIR/cast-to-unsized-trait-object-suggestion.rs:12:5
+   |
+12 |     &1 as Send;
+   |     ^^^^^^----
+   |           |
+   |           help: try casting to a reference instead: `&Send`
+
+error[E0620]: cast to unsized type: `std::boxed::Box<{integer}>` as `std::marker::Send`
+  --> $DIR/cast-to-unsized-trait-object-suggestion.rs:13:5
+   |
+13 |     Box::new(1) as Send;
+   |     ^^^^^^^^^^^^^^^----
+   |                    |
+   |                    help: try casting to a `Box` instead: `Box<Send>`
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/issue-35675.rs b/src/test/ui/issue-35675.rs
new file mode 100644
index 00000000000..391e1f2db5c
--- /dev/null
+++ b/src/test/ui/issue-35675.rs
@@ -0,0 +1,51 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// these two HELPs are actually in a new line between this line and the `enum Fruit` line
+enum Fruit { //~ HELP possible candidate is found in another module, you can import it into scope
+    //~^ HELP possible candidate is found in another module, you can import it into scope
+    Apple(i64),
+    //~^ HELP there is an enum variant `Fruit::Apple`, did you mean to use `Fruit`?
+    //~| HELP there is an enum variant `Fruit::Apple`, did you mean to use `Fruit`?
+    Orange(i64),
+}
+
+fn should_return_fruit() -> Apple {
+    //~^ ERROR cannot find type `Apple` in this scope
+    //~| NOTE not found in this scope
+    Apple(5)
+    //~^ ERROR cannot find function `Apple` in this scope
+    //~| NOTE not found in this scope
+}
+
+fn should_return_fruit_too() -> Fruit::Apple {
+    //~^ ERROR expected type, found variant `Fruit::Apple`
+    //~| NOTE not a type
+    Apple(5)
+    //~^ ERROR cannot find function `Apple` in this scope
+    //~| NOTE not found in this scope
+}
+
+fn bar() -> Variant3 {
+    //~^ ERROR cannot find type `Variant3` in this scope
+    //~| NOTE not found in this scope
+}
+
+fn main() {}
+
+mod x {
+    enum Enum {
+        Variant1,
+        Variant2(),
+        Variant3(usize),
+        //~^ HELP there is an enum variant `x::Enum::Variant3`, did you mean to use `x::Enum`?
+        Variant4 {},
+    }
+}
diff --git a/src/test/ui/issue-35675.stderr b/src/test/ui/issue-35675.stderr
new file mode 100644
index 00000000000..c2c10724646
--- /dev/null
+++ b/src/test/ui/issue-35675.stderr
@@ -0,0 +1,51 @@
+error[E0412]: cannot find type `Apple` in this scope
+  --> $DIR/issue-35675.rs:20:29
+   |
+20 | fn should_return_fruit() -> Apple {
+   |                             ^^^^^
+   |                             |
+   |                             not found in this scope
+   |                             help: you can try using the variant's enum: `Fruit`
+
+error[E0425]: cannot find function `Apple` in this scope
+  --> $DIR/issue-35675.rs:23:5
+   |
+23 |     Apple(5)
+   |     ^^^^^ not found in this scope
+   |
+help: possible candidate is found in another module, you can import it into scope
+   |
+12 | use Fruit::Apple;
+   |
+
+error[E0573]: expected type, found variant `Fruit::Apple`
+  --> $DIR/issue-35675.rs:28:33
+   |
+28 | fn should_return_fruit_too() -> Fruit::Apple {
+   |                                 ^^^^^^^^^^^^
+   |                                 |
+   |                                 not a type
+   |                                 help: you can try using the variant's enum: `Fruit`
+
+error[E0425]: cannot find function `Apple` in this scope
+  --> $DIR/issue-35675.rs:31:5
+   |
+31 |     Apple(5)
+   |     ^^^^^ not found in this scope
+   |
+help: possible candidate is found in another module, you can import it into scope
+   |
+12 | use Fruit::Apple;
+   |
+
+error[E0412]: cannot find type `Variant3` in this scope
+  --> $DIR/issue-35675.rs:36:13
+   |
+36 | fn bar() -> Variant3 {
+   |             ^^^^^^^^
+   |             |
+   |             not found in this scope
+   |             help: you can try using the variant's enum: `x::Enum`
+
+error: aborting due to 5 previous errors
+
diff --git a/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr b/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr
index de110ac12b7..26f150811b7 100644
--- a/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr
+++ b/src/test/ui/issue-40402-ref-hints/issue-40402-1.stderr
@@ -4,7 +4,7 @@ error[E0507]: cannot move out of indexed content
 19 |     let e = f.v[0];
    |             ^^^^^^
    |             |
-   |             help: consider using a reference instead `&f.v[0]`
+   |             help: consider using a reference instead: `&f.v[0]`
    |             cannot move out of indexed content
 
 error: aborting due to previous error
diff --git a/src/test/compile-fail/macro-name-typo.rs b/src/test/ui/macros/macro-name-typo.rs
index 4840205fee4..ec8d27f9138 100644
--- a/src/test/compile-fail/macro-name-typo.rs
+++ b/src/test/ui/macros/macro-name-typo.rs
@@ -10,6 +10,4 @@
 
 fn main() {
     printlx!("oh noes!");
-    //~^ ERROR cannot find macro
-    //~^^ HELP did you mean `println!`?
 }
diff --git a/src/test/ui/macros/macro-name-typo.stderr b/src/test/ui/macros/macro-name-typo.stderr
new file mode 100644
index 00000000000..7c83250fe8a
--- /dev/null
+++ b/src/test/ui/macros/macro-name-typo.stderr
@@ -0,0 +1,8 @@
+error: cannot find macro `printlx!` in this scope
+  --> $DIR/macro-name-typo.rs:12:5
+   |
+12 |     printlx!("oh noes!");
+   |     ^^^^^^^ help: you could try the macro: `println!`
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail/macro_undefined.rs b/src/test/ui/macros/macro_undefined.rs
index 00c8d44f306..db93ba5e2c4 100644
--- a/src/test/compile-fail/macro_undefined.rs
+++ b/src/test/ui/macros/macro_undefined.rs
@@ -19,9 +19,5 @@ mod m {
 
 fn main() {
     k!();
-    //~^ ERROR cannot find macro `k!` in this scope
-    //~^^ HELP did you mean `kl!`?
     kl!();
-    //~^ ERROR cannot find macro `kl!` in this scope
-    //~^^ HELP have you added the `#[macro_use]` on the module/import?
 }
diff --git a/src/test/ui/macros/macro_undefined.stderr b/src/test/ui/macros/macro_undefined.stderr
new file mode 100644
index 00000000000..5c33ae99734
--- /dev/null
+++ b/src/test/ui/macros/macro_undefined.stderr
@@ -0,0 +1,16 @@
+error: cannot find macro `kl!` in this scope
+  --> $DIR/macro_undefined.rs:22:5
+   |
+22 |     kl!();
+   |     ^^
+   |
+   = help: have you added the `#[macro_use]` on the module/import?
+
+error: cannot find macro `k!` in this scope
+  --> $DIR/macro_undefined.rs:21:5
+   |
+21 |     k!();
+   |     ^ help: you could try the macro: `kl!`
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/mismatched_types/issue-19109.stderr b/src/test/ui/mismatched_types/issue-19109.stderr
index 2b4b8242af6..2d8d557d9f3 100644
--- a/src/test/ui/mismatched_types/issue-19109.stderr
+++ b/src/test/ui/mismatched_types/issue-19109.stderr
@@ -2,7 +2,7 @@ error[E0308]: mismatched types
   --> $DIR/issue-19109.rs:14:5
    |
 13 | fn function(t: &mut Trait) {
-   |                            - help: possibly return type missing here? `-> *mut Trait `
+   |                            - help: possibly return type missing here?: `-> *mut Trait `
 14 |     t as *mut Trait
    |     ^^^^^^^^^^^^^^^ expected (), found *-ptr
    |
diff --git a/src/test/ui/resolve-error.stderr b/src/test/ui/resolve-error.stderr
new file mode 100644
index 00000000000..27f93939246
--- /dev/null
+++ b/src/test/ui/resolve-error.stderr
@@ -0,0 +1,62 @@
+error: cannot find derive macro `FooWithLongNan` in this scope
+  --> $DIR/resolve-error.rs:37:10
+   |
+37 | #[derive(FooWithLongNan)]
+   |          ^^^^^^^^^^^^^^ help: try: `FooWithLongName`
+
+error: cannot find attribute macro `attr_proc_macra` in this scope
+  --> $DIR/resolve-error.rs:40:3
+   |
+40 | #[attr_proc_macra]
+   |   ^^^^^^^^^^^^^^^ help: try: `attr_proc_macro`
+
+error: cannot find attribute macro `FooWithLongNan` in this scope
+  --> $DIR/resolve-error.rs:43:3
+   |
+43 | #[FooWithLongNan]
+   |   ^^^^^^^^^^^^^^
+
+error: cannot find derive macro `Dlone` in this scope
+  --> $DIR/resolve-error.rs:46:10
+   |
+46 | #[derive(Dlone)]
+   |          ^^^^^ help: try: `Clone`
+
+error: cannot find derive macro `Dlona` in this scope
+  --> $DIR/resolve-error.rs:49:10
+   |
+49 | #[derive(Dlona)]
+   |          ^^^^^ help: try: `Clona`
+
+error: cannot find derive macro `attr_proc_macra` in this scope
+  --> $DIR/resolve-error.rs:52:10
+   |
+52 | #[derive(attr_proc_macra)]
+   |          ^^^^^^^^^^^^^^^
+
+error: cannot find macro `FooWithLongNama!` in this scope
+  --> $DIR/resolve-error.rs:56:5
+   |
+56 |     FooWithLongNama!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `FooWithLongNam!`
+
+error: cannot find macro `attr_proc_macra!` in this scope
+  --> $DIR/resolve-error.rs:58:5
+   |
+58 |     attr_proc_macra!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `attr_proc_mac!`
+
+error: cannot find macro `Dlona!` in this scope
+  --> $DIR/resolve-error.rs:60:5
+   |
+60 |     Dlona!();
+   |     ^^^^^
+
+error: cannot find macro `bang_proc_macrp!` in this scope
+  --> $DIR/resolve-error.rs:62:5
+   |
+62 |     bang_proc_macrp!();
+   |     ^^^^^^^^^^^^^^^ help: you could try the macro: `bang_proc_macro!`
+
+error: aborting due to previous error(s)
+
diff --git a/src/test/ui/resolve/issue-14254.stderr b/src/test/ui/resolve/issue-14254.stderr
index 11268e593c4..7aa0c2707b5 100644
--- a/src/test/ui/resolve/issue-14254.stderr
+++ b/src/test/ui/resolve/issue-14254.stderr
@@ -2,7 +2,7 @@ error[E0425]: cannot find function `baz` in this scope
   --> $DIR/issue-14254.rs:29:9
    |
 29 |         baz();
-   |         ^^^ did you mean `self.baz(...)`?
+   |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `a` in this scope
   --> $DIR/issue-14254.rs:32:9
@@ -14,19 +14,19 @@ error[E0425]: cannot find function `baz` in this scope
   --> $DIR/issue-14254.rs:40:9
    |
 40 |         baz();
-   |         ^^^ did you mean `self.baz(...)`?
+   |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `x` in this scope
   --> $DIR/issue-14254.rs:43:9
    |
 43 |         x;
-   |         ^ did you mean `self.x`?
+   |         ^ help: try: `self.x`
 
 error[E0425]: cannot find value `y` in this scope
   --> $DIR/issue-14254.rs:46:9
    |
 46 |         y;
-   |         ^ did you mean `self.y`?
+   |         ^ help: try: `self.y`
 
 error[E0425]: cannot find value `a` in this scope
   --> $DIR/issue-14254.rs:49:9
@@ -38,7 +38,7 @@ error[E0425]: cannot find value `bah` in this scope
   --> $DIR/issue-14254.rs:52:9
    |
 52 |         bah;
-   |         ^^^ did you mean `Self::bah`?
+   |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find value `b` in this scope
   --> $DIR/issue-14254.rs:55:9
@@ -50,19 +50,19 @@ error[E0425]: cannot find function `baz` in this scope
   --> $DIR/issue-14254.rs:63:9
    |
 63 |         baz();
-   |         ^^^ did you mean `self.baz(...)`?
+   |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `x` in this scope
   --> $DIR/issue-14254.rs:66:9
    |
 66 |         x;
-   |         ^ did you mean `self.x`?
+   |         ^ help: try: `self.x`
 
 error[E0425]: cannot find value `y` in this scope
   --> $DIR/issue-14254.rs:69:9
    |
 69 |         y;
-   |         ^ did you mean `self.y`?
+   |         ^ help: try: `self.y`
 
 error[E0425]: cannot find value `a` in this scope
   --> $DIR/issue-14254.rs:72:9
@@ -74,7 +74,7 @@ error[E0425]: cannot find value `bah` in this scope
   --> $DIR/issue-14254.rs:75:9
    |
 75 |         bah;
-   |         ^^^ did you mean `Self::bah`?
+   |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find value `b` in this scope
   --> $DIR/issue-14254.rs:78:9
@@ -86,61 +86,61 @@ error[E0425]: cannot find function `baz` in this scope
   --> $DIR/issue-14254.rs:86:9
    |
 86 |         baz();
-   |         ^^^ did you mean `self.baz(...)`?
+   |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `bah` in this scope
   --> $DIR/issue-14254.rs:89:9
    |
 89 |         bah;
-   |         ^^^ did you mean `Self::bah`?
+   |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find function `baz` in this scope
   --> $DIR/issue-14254.rs:97:9
    |
 97 |         baz();
-   |         ^^^ did you mean `self.baz(...)`?
+   |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `bah` in this scope
    --> $DIR/issue-14254.rs:100:9
     |
 100 |         bah;
-    |         ^^^ did you mean `Self::bah`?
+    |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find function `baz` in this scope
    --> $DIR/issue-14254.rs:108:9
     |
 108 |         baz();
-    |         ^^^ did you mean `self.baz(...)`?
+    |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `bah` in this scope
    --> $DIR/issue-14254.rs:111:9
     |
 111 |         bah;
-    |         ^^^ did you mean `Self::bah`?
+    |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find function `baz` in this scope
    --> $DIR/issue-14254.rs:119:9
     |
 119 |         baz();
-    |         ^^^ did you mean `self.baz(...)`?
+    |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `bah` in this scope
    --> $DIR/issue-14254.rs:122:9
     |
 122 |         bah;
-    |         ^^^ did you mean `Self::bah`?
+    |         ^^^ help: try: `Self::bah`
 
 error[E0425]: cannot find function `baz` in this scope
    --> $DIR/issue-14254.rs:130:9
     |
 130 |         baz();
-    |         ^^^ did you mean `self.baz(...)`?
+    |         ^^^ help: try: `self.baz`
 
 error[E0425]: cannot find value `bah` in this scope
    --> $DIR/issue-14254.rs:133:9
     |
 133 |         bah;
-    |         ^^^ did you mean `Self::bah`?
+    |         ^^^ help: try: `Self::bah`
 
 error[E0601]: main function not found
 
diff --git a/src/test/ui/resolve/issue-2356.stderr b/src/test/ui/resolve/issue-2356.stderr
index 039887d8da6..9c683f44189 100644
--- a/src/test/ui/resolve/issue-2356.stderr
+++ b/src/test/ui/resolve/issue-2356.stderr
@@ -8,13 +8,13 @@ error[E0425]: cannot find function `clone` in this scope
   --> $DIR/issue-2356.rs:35:5
    |
 35 |     clone();
-   |     ^^^^^ did you mean `self.clone(...)`?
+   |     ^^^^^ help: try: `self.clone`
 
 error[E0425]: cannot find function `default` in this scope
   --> $DIR/issue-2356.rs:43:5
    |
 43 |     default();
-   |     ^^^^^^^ did you mean `Self::default`?
+   |     ^^^^^^^ help: try: `Self::default`
 
 error[E0425]: cannot find value `whiskers` in this scope
   --> $DIR/issue-2356.rs:52:5
@@ -22,14 +22,14 @@ error[E0425]: cannot find value `whiskers` in this scope
 52 |     whiskers -= other;
    |     ^^^^^^^^
    |     |
-   |     did you mean `self.whiskers`?
+   |     help: try: `self.whiskers`
    |     `self` value is only available in methods with `self` parameter
 
 error[E0425]: cannot find function `shave` in this scope
   --> $DIR/issue-2356.rs:57:5
    |
 57 |     shave(4);
-   |     ^^^^^ did you mean `Self::shave`?
+   |     ^^^^^ help: try: `Self::shave`
 
 error[E0425]: cannot find function `purr` in this scope
   --> $DIR/issue-2356.rs:60:5
@@ -83,7 +83,7 @@ error[E0425]: cannot find value `whiskers` in this scope
    --> $DIR/issue-2356.rs:104:5
     |
 104 |     whiskers = 0;
-    |     ^^^^^^^^ did you mean `self.whiskers`?
+    |     ^^^^^^^^ help: try: `self.whiskers`
 
 error[E0425]: cannot find value `whiskers` in this scope
    --> $DIR/issue-2356.rs:110:5
@@ -91,7 +91,7 @@ error[E0425]: cannot find value `whiskers` in this scope
 110 |     whiskers = 4;
     |     ^^^^^^^^
     |     |
-    |     did you mean `self.whiskers`?
+    |     help: try: `self.whiskers`
     |     `self` value is only available in methods with `self` parameter
 
 error[E0425]: cannot find function `purr_louder` in this scope
diff --git a/src/test/ui/resolve/resolve-assoc-suggestions.stderr b/src/test/ui/resolve/resolve-assoc-suggestions.stderr
index 7975c168de7..77aa545e2ad 100644
--- a/src/test/ui/resolve/resolve-assoc-suggestions.stderr
+++ b/src/test/ui/resolve/resolve-assoc-suggestions.stderr
@@ -14,13 +14,13 @@ error[E0425]: cannot find value `field` in this scope
   --> $DIR/resolve-assoc-suggestions.rs:32:9
    |
 32 |         field;
-   |         ^^^^^ did you mean `self.field`?
+   |         ^^^^^ help: try: `self.field`
 
 error[E0412]: cannot find type `Type` in this scope
   --> $DIR/resolve-assoc-suggestions.rs:36:16
    |
 36 |         let _: Type;
-   |                ^^^^ did you mean `Self::Type`?
+   |                ^^^^ help: try: `Self::Type`
 
 error[E0531]: cannot find tuple struct/variant `Type` in this scope
   --> $DIR/resolve-assoc-suggestions.rs:39:13
@@ -50,7 +50,7 @@ error[E0425]: cannot find value `method` in this scope
   --> $DIR/resolve-assoc-suggestions.rs:52:9
    |
 52 |         method;
-   |         ^^^^^^ did you mean `self.method(...)`?
+   |         ^^^^^^ help: try: `self.method`
 
 error: aborting due to 9 previous errors
 
diff --git a/src/test/ui/resolve/resolve-speculative-adjustment.stderr b/src/test/ui/resolve/resolve-speculative-adjustment.stderr
index e7df8140bc5..3e1b075679a 100644
--- a/src/test/ui/resolve/resolve-speculative-adjustment.stderr
+++ b/src/test/ui/resolve/resolve-speculative-adjustment.stderr
@@ -14,13 +14,13 @@ error[E0425]: cannot find value `field` in this scope
   --> $DIR/resolve-speculative-adjustment.rs:35:9
    |
 35 |         field;
-   |         ^^^^^ did you mean `self.field`?
+   |         ^^^^^ help: try: `self.field`
 
 error[E0425]: cannot find function `method` in this scope
   --> $DIR/resolve-speculative-adjustment.rs:38:9
    |
 38 |         method();
-   |         ^^^^^^ did you mean `self.method(...)`?
+   |         ^^^^^^ help: try: `self.method`
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/resolve/token-error-correct-3.stderr b/src/test/ui/resolve/token-error-correct-3.stderr
index bd3bdf35da6..2e8cc40dc51 100644
--- a/src/test/ui/resolve/token-error-correct-3.stderr
+++ b/src/test/ui/resolve/token-error-correct-3.stderr
@@ -35,7 +35,7 @@ error[E0308]: mismatched types
   --> $DIR/token-error-correct-3.rs:25:13
    |
 25 |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: did you mean to add a semicolon here? `;`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: did you mean to add a semicolon here?: `;`
    |             |
    |             expected (), found enum `std::result::Result`
    |
diff --git a/src/test/ui/resolve/unresolved_static_type_field.stderr b/src/test/ui/resolve/unresolved_static_type_field.stderr
index 5fbaf66e014..e598851e362 100644
--- a/src/test/ui/resolve/unresolved_static_type_field.stderr
+++ b/src/test/ui/resolve/unresolved_static_type_field.stderr
@@ -4,7 +4,7 @@ error[E0425]: cannot find value `cx` in this scope
 19 |         f(cx);
    |           ^^
    |           |
-   |           did you mean `self.cx`?
+   |           help: try: `self.cx`
    |           `self` value is only available in methods with `self` parameter
 
 error: aborting due to previous error
diff --git a/src/test/ui/span/issue-39018.stderr b/src/test/ui/span/issue-39018.stderr
index a0445eaee91..d87fc122d8e 100644
--- a/src/test/ui/span/issue-39018.stderr
+++ b/src/test/ui/span/issue-39018.stderr
@@ -4,7 +4,7 @@ error[E0369]: binary operation `+` cannot be applied to type `&'static str`
 12 |     let x = "Hello " + "World!";
    |             ^^^^^^^^^^^^^^^^^^^ `+` can't be used to concatenate two `&str` strings
    |
-help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left.
+help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
    |
 12 |     let x = "Hello ".to_owned() + "World!";
    |             ^^^^^^^^^^^^^^^^^^^
diff --git a/src/test/ui/span/suggestion-non-ascii.stderr b/src/test/ui/span/suggestion-non-ascii.stderr
index c2ab7542d8a..c67a8fe32b9 100644
--- a/src/test/ui/span/suggestion-non-ascii.stderr
+++ b/src/test/ui/span/suggestion-non-ascii.stderr
@@ -2,7 +2,7 @@ error[E0608]: cannot index into a value of type `({integer},)`
   --> $DIR/suggestion-non-ascii.rs:14:21
    |
 14 |     println!("☃{}", tup[0]);
-   |                     ^^^^^^ help: to access tuple elements, use `tup.0`
+   |                     ^^^^^^ help: to access tuple elements, use: `tup.0`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/suggestions/tuple-float-index.stderr b/src/test/ui/suggestions/tuple-float-index.stderr
index 8a121b14536..4b1be26c86b 100644
--- a/src/test/ui/suggestions/tuple-float-index.stderr
+++ b/src/test/ui/suggestions/tuple-float-index.stderr
@@ -5,7 +5,7 @@ error: unexpected token: `1.1`
    |     ------------^^^
    |     |           |
    |     |           unexpected token
-   |     help: try parenthesizing the first index `((1, (2, 3)).1).1`
+   |     help: try parenthesizing the first index: `((1, (2, 3)).1).1`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/type-check/assignment-in-if.stderr b/src/test/ui/type-check/assignment-in-if.stderr
index a077f37eae6..b740a1b776f 100644
--- a/src/test/ui/type-check/assignment-in-if.stderr
+++ b/src/test/ui/type-check/assignment-in-if.stderr
@@ -4,7 +4,7 @@ error[E0308]: mismatched types
 25 |     if x = x {
    |        ^^^^^
    |        |
-   |        help: did you mean to compare equality? `x == x`
+   |        help: did you mean to compare equality?: `x == x`
    |        expected bool, found ()
    |
    = note: expected type `bool`
@@ -16,7 +16,7 @@ error[E0308]: mismatched types
 31 |     if (x = x) {
    |        ^^^^^^^
    |        |
-   |        help: did you mean to compare equality? `x == x`
+   |        help: did you mean to compare equality?: `x == x`
    |        expected bool, found ()
    |
    = note: expected type `bool`
@@ -28,7 +28,7 @@ error[E0308]: mismatched types
 37 |     if y = (Foo { foo: x }) {
    |        ^^^^^^^^^^^^^^^^^^^^
    |        |
-   |        help: did you mean to compare equality? `y == (Foo { foo: x })`
+   |        help: did you mean to compare equality?: `y == (Foo { foo: x })`
    |        expected bool, found ()
    |
    = note: expected type `bool`
@@ -40,7 +40,7 @@ error[E0308]: mismatched types
 43 |     if 3 = x {
    |        ^^^^^
    |        |
-   |        help: did you mean to compare equality? `3 == x`
+   |        help: did you mean to compare equality?: `3 == x`
    |        expected bool, found ()
    |
    = note: expected type `bool`