about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-10-03 20:14:48 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-10-29 10:19:58 -0700
commitef2a8539aa4bdbcd641e51c5a85c7deb27dfae84 (patch)
treebe9d75040f5763446c4cf112806d93a92cd9eacd /src
parentc3521fe940324447de6bc54470647aaefe54a6bf (diff)
downloadrust-ef2a8539aa4bdbcd641e51c5a85c7deb27dfae84.tar.gz
rust-ef2a8539aa4bdbcd641e51c5a85c7deb27dfae84.zip
review comments
Diffstat (limited to 'src')
-rw-r--r--src/librustc/infer/error_reporting/nice_region_error/trait_impl_difference.rs27
-rw-r--r--src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.rs2
-rw-r--r--src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr2
-rw-r--r--src/test/ui/in-band-lifetimes/mismatched_trait_impl.rs2
-rw-r--r--src/test/ui/in-band-lifetimes/mismatched_trait_impl.stderr2
-rw-r--r--src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs2
-rw-r--r--src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr2
-rw-r--r--src/test/ui/reject-specialized-drops-8142.rs2
-rw-r--r--src/test/ui/reject-specialized-drops-8142.stderr2
9 files changed, 23 insertions, 20 deletions
diff --git a/src/librustc/infer/error_reporting/nice_region_error/trait_impl_difference.rs b/src/librustc/infer/error_reporting/nice_region_error/trait_impl_difference.rs
index bd5be893589..f546acdb878 100644
--- a/src/librustc/infer/error_reporting/nice_region_error/trait_impl_difference.rs
+++ b/src/librustc/infer/error_reporting/nice_region_error/trait_impl_difference.rs
@@ -1,5 +1,7 @@
 //! Error Reporting for `impl` items that do not match the obligations from their `trait`.
 
+use syntax_pos::Span;
+use crate::ty::Ty;
 use crate::infer::{ValuePairs, Subtype};
 use crate::infer::error_reporting::nice_region_error::NiceRegionError;
 use crate::infer::lexical_region_resolve::RegionResolutionError;
@@ -25,21 +27,11 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
                         ) = (&sub_trace.values, &sup_trace.values) {
                             if sup_expected_found == sub_expected_found {
                                 let sp = var_origin.span();
-                                let mut err = self.tcx().sess.struct_span_err(
+                                self.emit_err(
                                     sp,
-                                    "`impl` item doesn't match `trait` item"
-                                );
-                                err.note(&format!(
-                                    "expected: {:?}\n   found: {:?}",
                                     sub_expected_found.expected,
                                     sub_expected_found.found,
-                                ));
-                                err.span_label(sp, &format!(
-                                    "found {:?}",
-                                    sub_expected_found.found,
-                                ));
-                                // FIXME: recover the `FnPtr`'s `HirId`/`Node` to point to it.
-                                err.emit();
+                                );
                                 return Some(ErrorReported);
                             }
                         }
@@ -50,4 +42,15 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
         }
         None
     }
+
+    fn emit_err(&self, sp: Span, expected: Ty<'tcx>, found: Ty<'tcx>) {
+        let mut err = self.tcx().sess.struct_span_err(
+            sp,
+            "`impl` item signature doesn't match `trait` item signature",
+        );
+        err.note(&format!("expected: {:?}\n   found: {:?}", expected, found));
+        err.span_label(sp, &format!("found {:?}", found));
+        // FIXME: recover the `FnPtr`'s `HirId`/`Node` to point to it.
+        err.emit();
+    }
 }
diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.rs b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.rs
index 3c44af7188f..60e1585a51a 100644
--- a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.rs
+++ b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.rs
@@ -9,6 +9,6 @@ impl Deref for Struct {
         unimplemented!();
     }
 }
-//~^^^^ ERROR `impl` item doesn't match `trait` item
+//~^^^^ ERROR `impl` item signature doesn't match `trait` item signature
 
 fn main() {}
diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr
index d3228951b25..ea88cb14f01 100644
--- a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr
+++ b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr
@@ -1,4 +1,4 @@
-error: `impl` item doesn't match `trait` item
+error: `impl` item signature doesn't match `trait` item signature
   --> $DIR/mismatched_trait_impl-2.rs:8:5
    |
 LL |     fn deref(&self) -> &dyn Trait {
diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait_impl.rs b/src/test/ui/in-band-lifetimes/mismatched_trait_impl.rs
index a9b80a7c46f..b9e02e967c1 100644
--- a/src/test/ui/in-band-lifetimes/mismatched_trait_impl.rs
+++ b/src/test/ui/in-band-lifetimes/mismatched_trait_impl.rs
@@ -6,7 +6,7 @@ trait Get {
 }
 
 impl Get for i32 {
-    fn foo(&self, x: &u32, y: &'a u32) -> &'a u32 { //~ ERROR `impl` item doesn't match `trait`
+    fn foo(&self, x: &u32, y: &'a u32) -> &'a u32 { //~ ERROR `impl` item signature doesn't match
         x //~ ERROR lifetime mismatch
     }
 }
diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait_impl.stderr b/src/test/ui/in-band-lifetimes/mismatched_trait_impl.stderr
index ae65125a3df..4b0af292bbc 100644
--- a/src/test/ui/in-band-lifetimes/mismatched_trait_impl.stderr
+++ b/src/test/ui/in-band-lifetimes/mismatched_trait_impl.stderr
@@ -1,4 +1,4 @@
-error: `impl` item doesn't match `trait` item
+error: `impl` item signature doesn't match `trait` item signature
   --> $DIR/mismatched_trait_impl.rs:9:5
    |
 LL |     fn foo(&self, x: &u32, y: &'a u32) -> &'a u32 {
diff --git a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs b/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs
index cd285e70bc8..2ce1a0f4546 100644
--- a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs
+++ b/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs
@@ -4,7 +4,7 @@ trait Foo {
 
 impl Foo for () {
     fn foo<'a>(x: &'a i32, y: &'a i32) -> &'a i32 {
-    //~^ ERROR `impl` item doesn't match `trait` item
+    //~^ ERROR `impl` item signature doesn't match `trait` item signature
         if x > y { x } else { y }
     }
 }
diff --git a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr b/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr
index 099e5e97e17..cdb4c16eca3 100644
--- a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr
+++ b/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr
@@ -1,4 +1,4 @@
-error: `impl` item doesn't match `trait` item
+error: `impl` item signature doesn't match `trait` item signature
   --> $DIR/lifetime-mismatch-between-trait-and-impl.rs:6:5
    |
 LL |     fn foo<'a>(x: &'a i32, y: &'a i32) -> &'a i32 {
diff --git a/src/test/ui/reject-specialized-drops-8142.rs b/src/test/ui/reject-specialized-drops-8142.rs
index 39b959a2206..621626f3a0d 100644
--- a/src/test/ui/reject-specialized-drops-8142.rs
+++ b/src/test/ui/reject-specialized-drops-8142.rs
@@ -52,6 +52,6 @@ impl<One>         Drop for V<One,One>     { fn drop(&mut self) { } } // REJECT
 //~^ ERROR Implementations of Drop cannot be specialized
 
 impl<'lw>         Drop for W<'lw,'lw>     { fn drop(&mut self) { } } // REJECT
-//~^ ERROR `impl` item doesn't match `trait` item
+//~^ ERROR `impl` item signature doesn't match `trait` item signature
 
 pub fn main() { }
diff --git a/src/test/ui/reject-specialized-drops-8142.stderr b/src/test/ui/reject-specialized-drops-8142.stderr
index 7aa766dc503..bc7604cdede 100644
--- a/src/test/ui/reject-specialized-drops-8142.stderr
+++ b/src/test/ui/reject-specialized-drops-8142.stderr
@@ -89,7 +89,7 @@ note: Use same sequence of generic type and region parameters that is on the str
 LL | struct V<Tva, Tvb> { x: *const Tva, y: *const Tvb }
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: `impl` item doesn't match `trait` item
+error: `impl` item signature doesn't match `trait` item signature
   --> $DIR/reject-specialized-drops-8142.rs:54:1
    |
 LL | impl<'lw>         Drop for W<'lw,'lw>     { fn drop(&mut self) { } } // REJECT