Skip to content

Commit

Permalink
Rollup merge of rust-lang#36757 - KiChjang:E0025-format, r=jonathandt…
Browse files Browse the repository at this point in the history
…urner

Update E0025 to new error format

Part of rust-lang#35233.
Fixes rust-lang#35198.

r? @jonathandturner
  • Loading branch information
Jonathan Turner authored Sep 28, 2016
2 parents 4676bb0 + fd7314f commit 224e882
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 17 deletions.
16 changes: 8 additions & 8 deletions src/librustc_typeck/check/_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -675,14 +675,14 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
for &Spanned { node: ref field, span } in fields {
let field_ty = match used_fields.entry(field.name) {
Occupied(occupied) => {
let mut err = struct_span_err!(tcx.sess, span, E0025,
"field `{}` bound multiple times \
in the pattern",
field.name);
span_note!(&mut err, *occupied.get(),
"field `{}` previously bound here",
field.name);
err.emit();
struct_span_err!(tcx.sess, span, E0025,
"field `{}` bound multiple times \
in the pattern",
field.name)
.span_label(span,
&format!("multiple uses of `{}` in pattern", field.name))
.span_label(*occupied.get(), &format!("first use of `{}`", field.name))
.emit();
tcx.types.err
}
Vacant(vacant) => {
Expand Down
5 changes: 4 additions & 1 deletion src/test/compile-fail/E0025.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ struct Foo {

fn main() {
let x = Foo { a:1, b:2 };
let Foo { a: x, a: y, b: 0 } = x; //~ ERROR E0025
let Foo { a: x, a: y, b: 0 } = x;
//~^ ERROR field `a` bound multiple times in the pattern
//~| NOTE multiple uses of `a` in pattern
//~| NOTE first use of `a`
}
25 changes: 17 additions & 8 deletions src/test/compile-fail/issue-15260.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,28 @@ struct Foo {

fn main() {
let Foo {
a: _, //~ NOTE field `a` previously bound here
a: _ //~ ERROR field `a` bound multiple times in the pattern
a: _, //~ NOTE first use of `a`
a: _
//~^ ERROR field `a` bound multiple times in the pattern
//~| NOTE multiple uses of `a` in pattern
} = Foo { a: 29 };

let Foo {
a, //~ NOTE field `a` previously bound here
a: _ //~ ERROR field `a` bound multiple times in the pattern
a, //~ NOTE first use of `a`
a: _
//~^ ERROR field `a` bound multiple times in the pattern
//~| NOTE multiple uses of `a` in pattern
} = Foo { a: 29 };

let Foo {
a, //~ NOTE field `a` previously bound here
//~^ NOTE field `a` previously bound here
a: _, //~ ERROR field `a` bound multiple times in the pattern
a: x //~ ERROR field `a` bound multiple times in the pattern
a,
//~^ NOTE first use of `a`
//~| NOTE first use of `a`
a: _,
//~^ ERROR field `a` bound multiple times in the pattern
//~| NOTE multiple uses of `a` in pattern
a: x
//~^ ERROR field `a` bound multiple times in the pattern
//~| NOTE multiple uses of `a` in pattern
} = Foo { a: 29 };
}

0 comments on commit 224e882

Please sign in to comment.