error[E0308]: mismatched types
  --> $DIR/infinite-autoderef.rs:19:13
   |
LL |         x = Box::new(x);
   |             ^^^^^^^^^^^ cyclic type of infinite size
   |
help: consider unboxing the value
   |
LL |         x = *Box::new(x);
   |             +

error[E0055]: reached the recursion limit while auto-dereferencing `Foo`
  --> $DIR/infinite-autoderef.rs:24:5
   |
LL |     Foo.foo;
   |     ^^^^^^^ deref recursion limit reached
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_autoderef`)

error[E0055]: reached the recursion limit while auto-dereferencing `Foo`
  --> $DIR/infinite-autoderef.rs:24:9
   |
LL |     Foo.foo;
   |         ^^^ deref recursion limit reached
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_autoderef`)

error[E0609]: no field `foo` on type `Foo`
  --> $DIR/infinite-autoderef.rs:24:9
   |
LL |     Foo.foo;
   |         ^^^ unknown field

error[E0055]: reached the recursion limit while auto-dereferencing `Foo`
  --> $DIR/infinite-autoderef.rs:25:9
   |
LL |     Foo.bar();
   |         ^^^ deref recursion limit reached
   |
   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`infinite_autoderef`)

error[E0599]: no method named `bar` found for struct `Foo` in the current scope
  --> $DIR/infinite-autoderef.rs:25:9
   |
LL | struct Foo;
   | ---------- method `bar` not found for this struct
...
LL |     Foo.bar();
   |         ^^^ method not found in `Foo`

error: aborting due to 6 previous errors

Some errors have detailed explanations: E0055, E0308, E0599, E0609.
For more information about an error, try `rustc --explain E0055`.
