diff options
| author | Cedric <cedric.brancourt@gmail.com> | 2019-06-19 10:07:07 +0200 |
|---|---|---|
| committer | Cedric <cedric.brancourt@gmail.com> | 2019-06-19 10:07:07 +0200 |
| commit | c917ba325f3e7944eefb5e906ca0392c9b499541 (patch) | |
| tree | 78d34e600c127a4b170f46c8e09d7edf123de85d | |
| parent | 2191c1db08d21aac4d3823a497e429de283e878b (diff) | |
| download | rust-c917ba325f3e7944eefb5e906ca0392c9b499541.tar.gz rust-c917ba325f3e7944eefb5e906ca0392c9b499541.zip | |
adt hint pointing to adt span
| -rw-r--r-- | src/librustc_typeck/check/expr.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-4736.stderr | 7 | ||||
| -rw-r--r-- | src/test/ui/numeric/numeric-fields.stderr | 7 |
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 |
