]> git.lizzy.rs Git - rust.git/blobdiff - src/test/ui/infinite/infinite-tag-type-recursion.stderr
On recursive ADT, provide indirection structured suggestion
[rust.git] / src / test / ui / infinite / infinite-tag-type-recursion.stderr
index 88dad0033ddcfa27eca2ca555fa09409c24984d0..b6a4d8f4cf563bb0983897f3016c6acad1539b32 100644 (file)
@@ -6,8 +6,25 @@ LL | enum MList { Cons(isize, MList), Nil }
    | |
    | recursive type has infinite size
    |
-   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `MList` representable
+help: insert some indirection to make `MList` representable
+   |
+LL | enum MList { Cons(isize, Box<MList>), Nil }
+   |                          ^^^^     ^
+LL | enum MList { Cons(isize, Rc<MList>), Nil }
+   |                          ^^^     ^
+LL | enum MList { Cons(isize, &MList), Nil }
+   |                          ^
+
+error[E0391]: cycle detected when computing drop-check constraints for `MList`
+  --> $DIR/infinite-tag-type-recursion.rs:1:1
+   |
+LL | enum MList { Cons(isize, MList), Nil }
+   | ^^^^^^^^^^
+   |
+   = note: ...which again requires computing drop-check constraints for `MList`, completing the cycle
+   = note: cycle used when computing dropck types for `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: UserFacing, def_id: None }, value: MList } }`
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0072`.
+Some errors have detailed explanations: E0072, E0391.
+For more information about an error, try `rustc --explain E0072`.