about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCedric <cedric.brancourt@gmail.com>2019-06-19 10:07:07 +0200
committerCedric <cedric.brancourt@gmail.com>2019-06-19 10:07:07 +0200
commitc917ba325f3e7944eefb5e906ca0392c9b499541 (patch)
tree78d34e600c127a4b170f46c8e09d7edf123de85d
parent2191c1db08d21aac4d3823a497e429de283e878b (diff)
downloadrust-c917ba325f3e7944eefb5e906ca0392c9b499541.tar.gz
rust-c917ba325f3e7944eefb5e906ca0392c9b499541.zip
adt hint pointing to adt span
-rw-r--r--src/librustc_typeck/check/expr.rs5
-rw-r--r--src/test/ui/issues/issue-4736.stderr7
-rw-r--r--src/test/ui/numeric/numeric-fields.stderr7
3 files changed, 9 insertions, 10 deletions
diff --git a/src/librustc_typeck/check/expr.rs b/src/librustc_typeck/check/expr.rs
index 8edda805592..3c31e012403 100644
--- a/src/librustc_typeck/check/expr.rs
+++ b/src/librustc_typeck/check/expr.rs
@@ -1125,7 +1125,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
 
                     err.emit();
                 } else {
-                    self.report_unknown_field(adt_ty, variant, field, ast_fields, kind_name);
+                    self.report_unknown_field(adt_ty, variant, field, ast_fields, kind_name, span);
                 }
 
                 tcx.types.err
@@ -1196,6 +1196,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
         field: &hir::Field,
         skip_fields: &[hir::Field],
         kind_name: &str,
+        ty_span: Span
     ) {
         if variant.recovered {
             return;
@@ -1218,7 +1219,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
         match variant.ctor_kind {
             CtorKind::Fn => {
                 err.span_label(field.ident.span, "field does not exist");
-                err.span_label(field.ident.span, format!(
+                err.span_label(ty_span, format!(
                     "`{adt}` is a tuple {kind_name}, use the appropriate syntax: `{adt}(/* fields */)`",
                     adt=ty,
                     kind_name=kind_name
diff --git a/src/test/ui/issues/issue-4736.stderr b/src/test/ui/issues/issue-4736.stderr
index 557ee5593f3..6786b592d98 100644
--- a/src/test/ui/issues/issue-4736.stderr
+++ b/src/test/ui/issues/issue-4736.stderr
@@ -2,10 +2,9 @@ error[E0560]: struct `NonCopyable` has no field named `p`
   --> $DIR/issue-4736.rs:4:26
    |
 LL |     let z = NonCopyable{ p: () };
-   |                          ^
-   |                          |
-   |                          field does not exist
-   |                          `NonCopyable` is a tuple struct, use the appropriate syntax: `NonCopyable(/* fields */)`
+   |             -----------  ^ field does not exist
+   |             |
+   |             `NonCopyable` is a tuple struct, use the appropriate syntax: `NonCopyable(/* fields */)`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/numeric/numeric-fields.stderr b/src/test/ui/numeric/numeric-fields.stderr
index fef7486b853..e71af0f33ee 100644
--- a/src/test/ui/numeric/numeric-fields.stderr
+++ b/src/test/ui/numeric/numeric-fields.stderr
@@ -2,10 +2,9 @@ error[E0560]: struct `S` has no field named `0b1`
   --> $DIR/numeric-fields.rs:4:15
    |
 LL |     let s = S{0b1: 10, 0: 11};
-   |               ^^^
-   |               |
-   |               field does not exist
-   |               `S` is a tuple struct, use the appropriate syntax: `S(/* fields */)`
+   |             - ^^^ field does not exist
+   |             |
+   |             `S` is a tuple struct, use the appropriate syntax: `S(/* fields */)`
 
 error[E0026]: struct `S` does not have a field named `0x1`
   --> $DIR/numeric-fields.rs:7:17