Skip to content

Commit

Permalink
Updated E0071 to new format.
Browse files Browse the repository at this point in the history
The span underlines only the name of the thing that's not a struct rather
than the whole expression.
  • Loading branch information
razielgn committed Aug 4, 2016
1 parent 40f3ee2 commit 7c58b26
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/librustc_typeck/check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3147,9 +3147,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
};
if variant.is_none() || variant.unwrap().kind == ty::VariantKind::Tuple {
// Reject tuple structs for now, braced and unit structs are allowed.
span_err!(self.tcx.sess, span, E0071,
"`{}` does not name a struct or a struct variant",
pprust::path_to_string(path));
struct_span_err!(self.tcx.sess, path.span, E0071,
"`{}` does not name a struct or a struct variant",
pprust::path_to_string(path))
.span_label(path.span, &format!("not a struct"))
.emit();

return None;
}

Expand Down
9 changes: 7 additions & 2 deletions src/test/compile-fail/E0071.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
enum Foo { FirstValue(i32) }

fn main() {
let u = Foo::FirstValue { value: 0 }; //~ ERROR E0071
let t = u32 { value: 4 }; //~ ERROR E0071
let u = Foo::FirstValue { value: 0 };
//~^ ERROR `Foo::FirstValue` does not name a struct or a struct variant [E0071]
//~| NOTE not a struct

let t = u32 { value: 4 };
//~^ ERROR `u32` does not name a struct or a struct variant [E0071]
//~| NOTE not a struct
}
1 change: 1 addition & 0 deletions src/test/compile-fail/trait-as-struct-constructor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ trait TraitNotAStruct {}
fn main() {
TraitNotAStruct{ value: 0 };
//~^ ERROR: `TraitNotAStruct` does not name a struct or a struct variant [E0071]
//~| NOTE not a struct
}

0 comments on commit 7c58b26

Please sign in to comment.