about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_errors/src/emitter.rs2
-rw-r--r--src/tools/tidy/src/ui_tests.rs2
-rw-r--r--tests/ui/error-emitter/highlighting.rs23
-rw-r--r--tests/ui/error-emitter/highlighting.stderr22
-rw-r--r--tests/ui/error-emitter/multiline-multipart-suggestion.rs (renamed from tests/ui/suggestions/multiline-multipart-suggestion.rs)7
-rw-r--r--tests/ui/error-emitter/multiline-multipart-suggestion.stderr (renamed from tests/ui/suggestions/multiline-multipart-suggestion.stderr)14
6 files changed, 58 insertions, 12 deletions
diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs
index 62aa8e602af..3f257fdd9cf 100644
--- a/compiler/rustc_errors/src/emitter.rs
+++ b/compiler/rustc_errors/src/emitter.rs
@@ -2719,7 +2719,7 @@ impl Style {
                 spec.set_bold(true);
             }
             Style::Highlight => {
-                spec.set_bold(true);
+                spec.set_bold(true).set_fg(Some(Color::Magenta));
             }
         }
         spec
diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs
index 40149f8f1c3..dfa386b49de 100644
--- a/src/tools/tidy/src/ui_tests.rs
+++ b/src/tools/tidy/src/ui_tests.rs
@@ -11,7 +11,7 @@ use std::path::{Path, PathBuf};
 const ENTRY_LIMIT: usize = 900;
 // FIXME: The following limits should be reduced eventually.
 const ISSUES_ENTRY_LIMIT: usize = 1852;
-const ROOT_ENTRY_LIMIT: usize = 866;
+const ROOT_ENTRY_LIMIT: usize = 867;
 
 const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[
     "rs",     // test source files
diff --git a/tests/ui/error-emitter/highlighting.rs b/tests/ui/error-emitter/highlighting.rs
new file mode 100644
index 00000000000..f7c15100fed
--- /dev/null
+++ b/tests/ui/error-emitter/highlighting.rs
@@ -0,0 +1,23 @@
+// Make sure "highlighted" code is colored purple
+
+// compile-flags: --error-format=human --color=always
+// error-pattern:for<'a> 
+// edition:2018
+
+use core::pin::Pin;
+use core::future::Future;
+use core::any::Any;
+
+fn query(_: fn(Box<(dyn Any + Send + '_)>) -> Pin<Box<(
+    dyn Future<Output = Result<Box<(dyn Any + 'static)>, String>> + Send + 'static
+)>>) {}
+
+fn wrapped_fn<'a>(_: Box<(dyn Any + Send)>) -> Pin<Box<(
+    dyn Future<Output = Result<Box<(dyn Any + 'static)>, String>> + Send + 'static
+)>> {
+    Box::pin(async { Err("nope".into()) })
+}
+
+fn main() {
+    query(wrapped_fn);
+}
diff --git a/tests/ui/error-emitter/highlighting.stderr b/tests/ui/error-emitter/highlighting.stderr
new file mode 100644
index 00000000000..12a1caa6ef3
--- /dev/null
+++ b/tests/ui/error-emitter/highlighting.stderr
@@ -0,0 +1,22 @@
+error[E0308]: mismatched types
+  --> $DIR/highlighting.rs:22:11
+   |
+LL |     query(wrapped_fn);
+   |     ----- ^^^^^^^^^^ one type is more general than the other
+   |     |
+   |     arguments to this function are incorrect
+   |
+   = note: expected fn pointer `for<'a> fn(Box<(dyn Any + Send + 'a)>) -> Pin<_>`
+                 found fn item `fn(Box<(dyn Any + Send + 'static)>) -> Pin<_> {wrapped_fn}`
+note: function defined here
+  --> $DIR/highlighting.rs:11:4
+   |
+LL |   fn query(_: fn(Box<(dyn Any + Send + '_)>) -> Pin<Box<(
+   |  ____^^^^^_-
+LL | |     dyn Future<Output = Result<Box<(dyn Any + 'static)>, String>> + Send + 'static
+LL | | )>>) {}
+   | |___-
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/suggestions/multiline-multipart-suggestion.rs b/tests/ui/error-emitter/multiline-multipart-suggestion.rs
index 77d0322d05f..5532fe3d6f7 100644
--- a/tests/ui/suggestions/multiline-multipart-suggestion.rs
+++ b/tests/ui/error-emitter/multiline-multipart-suggestion.rs
@@ -1,18 +1,19 @@
 // compile-flags: --error-format=human --color=always
+// error-pattern: missing lifetime specifier
 // ignore-windows
 
-fn short(foo_bar: &Vec<&i32>) -> &i32 { //~ ERROR missing lifetime specifier
+fn short(foo_bar: &Vec<&i32>) -> &i32 {
     &12
 }
 
-fn long( //~ ERROR missing lifetime specifier
+fn long(
     foo_bar: &Vec<&i32>,
     something_very_long_so_that_the_line_will_wrap_around__________: i32,
 ) -> &i32 {
     &12
 }
 
-fn long2( //~ ERROR missing lifetime specifier
+fn long2(
     foo_bar: &Vec<&i32>) -> &i32 {
     &12
 }
diff --git a/tests/ui/suggestions/multiline-multipart-suggestion.stderr b/tests/ui/error-emitter/multiline-multipart-suggestion.stderr
index 045a86b4f54..7f418fe8ad1 100644
--- a/tests/ui/suggestions/multiline-multipart-suggestion.stderr
+++ b/tests/ui/error-emitter/multiline-multipart-suggestion.stderr
@@ -1,17 +1,17 @@
 error[E0106]: missing lifetime specifier
-  --> $DIR/multiline-multipart-suggestion.rs:4:34
+  --> $DIR/multiline-multipart-suggestion.rs:5:34
    |
-LL | fn short(foo_bar: &Vec<&i32>) -> &i32 {
+LL | fn short(foo_bar: &Vec<&i32>) -> &i32 {
    |                   ----------     ^ expected named lifetime parameter
    |
    = help: this function's return type contains a borrowed value, but the signature does not say which one of `foo_bar`'s 2 lifetimes it is borrowed from
 help: consider introducing a named lifetime parameter
    |
-LL | fn short<'a>(foo_bar: &'a Vec<&'a i32>) -> &'a i32 {
+LL | fn short<'a>(foo_bar: &'a Vec<&'a i32>) -> &'a i32 {
    |         ++++           ++      ++           ++
 
 error[E0106]: missing lifetime specifier
-  --> $DIR/multiline-multipart-suggestion.rs:11:6
+  --> $DIR/multiline-multipart-suggestion.rs:12:6
    |
 LL |     foo_bar: &Vec<&i32>,
    |              ----------
@@ -22,14 +22,14 @@
    = help: this function's return type contains a borrowed value, but the signature does not say which one of `foo_bar`'s 2 lifetimes it is borrowed from
 help: consider introducing a named lifetime parameter
    |
-LL ~ fn long<'a>(
+LL ~ fn long<'a>(
 LL ~     foo_bar: &'a Vec<&'a i32>,
 LL |     something_very_long_so_that_the_line_will_wrap_around__________: i32,
 LL ~ ) -> &'a i32 {
    |
 
 error[E0106]: missing lifetime specifier
-  --> $DIR/multiline-multipart-suggestion.rs:16:29
+  --> $DIR/multiline-multipart-suggestion.rs:17:29
    |
 LL |     foo_bar: &Vec<&i32>) -> &i32 {
    |              ----------     ^ expected named lifetime parameter
@@ -37,7 +37,7 @@
    = help: this function's return type contains a borrowed value, but the signature does not say which one of `foo_bar`'s 2 lifetimes it is borrowed from
 help: consider introducing a named lifetime parameter
    |
-LL ~ fn long2<'a>(
+LL ~ fn long2<'a>(
 LL ~     foo_bar: &'a Vec<&'a i32>) -> &'a i32 {
    |