Skip to content

Commit

Permalink
Rollup merge of rust-lang#35576 - circuitfox:E0072-update-error-forma…
Browse files Browse the repository at this point in the history
…t, r=jonathandturner

E0072 update error format

Part of  rust-lang#35233

Fixes rust-lang#35506

r? @jonathandturner

The bonus for this issue currently seems to be impossible to do reliably, as the compiler seems to lack span information for item names alone, like `Foo` in `struct Foo { ... }`. It would be possible to hack something together by computing span offsets, but that seems like a solution that would be begging for trouble.

A proper solution to this would, of course, be to add span information to the right place (seems to be `rustc::hir::Item::name` but I may be wrong).
  • Loading branch information
Jonathan Turner authored Aug 11, 2016
2 parents 0e92c5e + c5f9feb commit cdedad5
Show file tree
Hide file tree
Showing 6 changed files with 6 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/librustc/traits/error_reporting.rs
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
let mut err = struct_span_err!(self.sess, span, E0072,
"recursive type `{}` has infinite size",
self.item_path_str(type_def_id));
err.span_label(span, &format!("recursive type has infinite size"));
err.help(&format!("insert indirection (e.g., a `Box`, `Rc`, or `&`) \
at some point to make `{}` representable",
self.item_path_str(type_def_id)));
Expand Down
1 change: 1 addition & 0 deletions src/test/compile-fail/E0072.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
// except according to those terms.

struct ListNode { //~ ERROR E0072
//~| NOTE recursive type has infinite size
head: u8,
tail: Option<ListNode>,
}
Expand Down
1 change: 1 addition & 0 deletions src/test/compile-fail/issue-3008-2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
enum foo { foo_(bar) }
struct bar { x: bar }
//~^ ERROR E0072
//~| NOTE recursive type has infinite size

fn main() {
}
1 change: 1 addition & 0 deletions src/test/compile-fail/issue-32326.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// too big.

enum Expr { //~ ERROR E0072
//~| NOTE recursive type has infinite size
Plus(Expr, Expr),
Literal(i64),
}
Expand Down
1 change: 1 addition & 0 deletions src/test/compile-fail/issue-3779.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
// except according to those terms.

struct S { //~ ERROR E0072
//~| NOTE recursive type has infinite size
element: Option<S>
}

Expand Down
1 change: 1 addition & 0 deletions src/test/compile-fail/type-recursive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
// except according to those terms.

struct t1 { //~ ERROR E0072
//~| NOTE recursive type has infinite size
foo: isize,
foolish: t1
}
Expand Down

0 comments on commit cdedad5

Please sign in to comment.