Auto merge of #73369 - RalfJung:rollup-hl8g9zf, r=RalfJung
Rollup of 10 pull requests Successful merges: - #72707 (Use min_specialization in the remaining rustc crates) - #72740 (On recursive ADT, provide indirection structured suggestion) - #72879 (Miri: avoid tracking current location three times) - #72938 (Stabilize Option::zip) - #73086 (Rename "cyclone" to "apple-a7" per changes in upstream LLVM) - #73104 (Example about explicit mutex dropping) - #73139 (Add methods to go from a nul-terminated Vec<u8> to a CString) - #73296 (Remove vestigial CI job msvc-aux.) - #73304 (Revert heterogeneous SocketAddr PartialEq impls) - #73331 (extend network support for HermitCore) Failed merges: r? @ghost
This commit is contained in:
commit
ff4a2533a0
92 changed files with 1064 additions and 585 deletions
|
|
@ -23,10 +23,10 @@ LL | n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
|
|||
= help: add `#![feature(const_if_match)]` to the crate attributes to enable
|
||||
|
||||
error[E0080]: evaluation of constant value failed
|
||||
--> $DIR/infinite_loop.rs:8:20
|
||||
--> $DIR/infinite_loop.rs:8:17
|
||||
|
|
||||
LL | n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
|
||||
| ^^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ LL | bytes: [u8; std::mem::size_of::<Foo>()]
|
|||
note: ...which requires const-evaluating `std::mem::size_of`...
|
||||
--> $SRC_DIR/libcore/mem/mod.rs:LL:COL
|
||||
|
|
||||
LL | intrinsics::size_of::<T>()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | pub const fn size_of<T>() -> usize {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: ...which requires const-evaluating + checking `std::intrinsics::size_of`...
|
||||
--> $SRC_DIR/libcore/intrinsics.rs:LL:COL
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
error: any use of this value will cause an error
|
||||
--> $DIR/const_eval_limit_reached.rs:8:11
|
||||
--> $DIR/const_eval_limit_reached.rs:8:5
|
||||
|
|
||||
LL | / const X: usize = {
|
||||
LL | | let mut x = 0;
|
||||
LL | | while x != 1000 {
|
||||
| | ^^^^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
|
||||
LL | |
|
||||
... |
|
||||
LL | | x
|
||||
LL | | };
|
||||
| |__-
|
||||
LL | / const X: usize = {
|
||||
LL | | let mut x = 0;
|
||||
LL | | while x != 1000 {
|
||||
| |_____^
|
||||
LL | ||
|
||||
LL | || x += 1;
|
||||
LL | || }
|
||||
| ||_____^ exceeded interpreter step limit (see `#[const_eval_limit]`)
|
||||
LL | |
|
||||
LL | | x
|
||||
LL | | };
|
||||
| |__-
|
||||
|
|
||||
= note: `#[deny(const_err)]` on by default
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0391]: cycle detected when const-evaluating `FOO`
|
||||
--> $DIR/recursive-zst-static.rs:10:18
|
||||
--> $DIR/recursive-zst-static.rs:10:1
|
||||
|
|
||||
LL | static FOO: () = FOO;
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: ...which requires const-evaluating `FOO`...
|
||||
--> $DIR/recursive-zst-static.rs:10:1
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0391]: cycle detected when const-evaluating `FOO`
|
||||
--> $DIR/recursive-zst-static.rs:10:18
|
||||
--> $DIR/recursive-zst-static.rs:10:1
|
||||
|
|
||||
LL | static FOO: () = FOO;
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: ...which requires const-evaluating `FOO`...
|
||||
--> $DIR/recursive-zst-static.rs:10:1
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
// build-fail
|
||||
|
||||
pub const unsafe fn fake_type<T>() -> T {
|
||||
hint_unreachable()
|
||||
hint_unreachable() //~ ERROR evaluation of constant value failed
|
||||
}
|
||||
|
||||
pub const unsafe fn hint_unreachable() -> ! {
|
||||
fake_type() //~ ERROR evaluation of constant value failed
|
||||
fake_type()
|
||||
}
|
||||
|
||||
trait Const {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
error[E0080]: evaluation of constant value failed
|
||||
--> $DIR/uninhabited-const-issue-61744.rs:8:5
|
||||
--> $DIR/uninhabited-const-issue-61744.rs:4:5
|
||||
|
|
||||
LL | hint_unreachable()
|
||||
| ------------------
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| reached the configured maximum number of stack frames
|
||||
| inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
|
||||
| inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
|
||||
| inside `fake_type::<!>` at $DIR/uninhabited-const-issue-61744.rs:4:5
|
||||
|
|
@ -71,9 +72,8 @@ LL | hint_unreachable()
|
|||
| inside `fake_type::<i32>` at $DIR/uninhabited-const-issue-61744.rs:4:5
|
||||
...
|
||||
LL | fake_type()
|
||||
| ^^^^^^^^^^^
|
||||
| -----------
|
||||
| |
|
||||
| reached the configured maximum number of stack frames
|
||||
| inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
|
||||
| inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
|
||||
| inside `hint_unreachable` at $DIR/uninhabited-const-issue-61744.rs:8:5
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
error[E0391]: cycle detected when const-evaluating `a`
|
||||
--> $DIR/infinite-recursion-const-fn.rs:3:25
|
||||
--> $DIR/infinite-recursion-const-fn.rs:3:1
|
||||
|
|
||||
LL | const fn a() -> usize { b() }
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: ...which requires const-evaluating `b`...
|
||||
--> $DIR/infinite-recursion-const-fn.rs:4:25
|
||||
--> $DIR/infinite-recursion-const-fn.rs:4:1
|
||||
|
|
||||
LL | const fn b() -> usize { a() }
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: ...which again requires const-evaluating `a`, completing the cycle
|
||||
note: cycle used when const-evaluating `ARR::{{constant}}#0`
|
||||
--> $DIR/infinite-recursion-const-fn.rs:5:18
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ 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 (e.g., a `Box`, `Rc`, or `&`) to make `MList` representable
|
||||
|
|
||||
LL | enum MList { Cons(isize, Box<MList>), Nil }
|
||||
| ^^^^ ^
|
||||
|
||||
error[E0391]: cycle detected when computing drop-check constraints for `MList`
|
||||
--> $DIR/infinite-tag-type-recursion.rs:1:1
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
|
|||
--> $DIR/issue-17431-1.rs:1:1
|
||||
|
|
||||
LL | struct Foo { foo: Option<Option<Foo>> }
|
||||
| ^^^^^^^^^^ ------------------------ recursive without indirection
|
||||
| ^^^^^^^^^^ ------------------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | struct Foo { foo: Box<Option<Option<Foo>>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,21 +2,27 @@ error[E0072]: recursive type `Baz` has infinite size
|
|||
--> $DIR/issue-17431-2.rs:1:1
|
||||
|
|
||||
LL | struct Baz { q: Option<Foo> }
|
||||
| ^^^^^^^^^^ -------------- recursive without indirection
|
||||
| ^^^^^^^^^^ ----------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Baz` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable
|
||||
|
|
||||
LL | struct Baz { q: Box<Option<Foo>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error[E0072]: recursive type `Foo` has infinite size
|
||||
--> $DIR/issue-17431-2.rs:4:1
|
||||
|
|
||||
LL | struct Foo { q: Option<Baz> }
|
||||
| ^^^^^^^^^^ -------------- recursive without indirection
|
||||
| ^^^^^^^^^^ ----------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | struct Foo { q: Box<Option<Baz>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
|
|||
--> $DIR/issue-17431-3.rs:3:1
|
||||
|
|
||||
LL | struct Foo { foo: Mutex<Option<Foo>> }
|
||||
| ^^^^^^^^^^ ----------------------- recursive without indirection
|
||||
| ^^^^^^^^^^ ------------------ recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | struct Foo { foo: Box<Mutex<Option<Foo>>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ error[E0072]: recursive type `Foo` has infinite size
|
|||
--> $DIR/issue-17431-4.rs:3:1
|
||||
|
|
||||
LL | struct Foo<T> { foo: Option<Option<Foo<T>>>, marker: marker::PhantomData<T> }
|
||||
| ^^^^^^^^^^^^^ --------------------------- recursive without indirection
|
||||
| ^^^^^^^^^^^^^ ---------------------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | struct Foo<T> { foo: Box<Option<Option<Foo<T>>>>, marker: marker::PhantomData<T> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ error[E0072]: recursive type `Bar` has infinite size
|
|||
--> $DIR/issue-17431-5.rs:5:1
|
||||
|
|
||||
LL | struct Bar<T> { x: Bar<Foo> , marker: marker::PhantomData<T> }
|
||||
| ^^^^^^^^^^^^^ ----------- recursive without indirection
|
||||
| ^^^^^^^^^^^^^ -------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
|
||||
|
|
||||
LL | struct Bar<T> { x: Box<Bar<Foo>> , marker: marker::PhantomData<T> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ LL | enum Foo { X(Mutex<Option<Foo>>) }
|
|||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | enum Foo { X(Box<Mutex<Option<Foo>>>) }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ LL | enum Foo { Voo(Option<Option<Foo>>) }
|
|||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | enum Foo { Voo(Box<Option<Option<Foo>>>) }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ LL | pub struct Pong(SendPacket<Ping>);
|
|||
| | recursive without indirection
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `pingpong::Pong` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `pingpong::Pong` representable
|
||||
|
|
||||
LL | pub struct Pong(Box<SendPacket<Ping>>);
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ LL | enum Bar {
|
|||
LL | BarSome(Bar)
|
||||
| --- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
|
||||
|
|
||||
LL | BarSome(Box<Bar>)
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ error[E0072]: recursive type `Bar` has infinite size
|
|||
--> $DIR/issue-3008-2.rs:2:1
|
||||
|
|
||||
LL | struct Bar { x: Bar }
|
||||
| ^^^^^^^^^^ ------ recursive without indirection
|
||||
| ^^^^^^^^^^ --- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
|
||||
|
|
||||
LL | struct Bar { x: Box<Bar> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ LL | enum E2<T> { V2(E2<E1>, marker::PhantomData<T>), }
|
|||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `E2` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `E2` representable
|
||||
|
|
||||
LL | enum E2<T> { V2(Box<E2<E1>>, marker::PhantomData<T>), }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@ LL | Plus(Expr, Expr),
|
|||
| |
|
||||
| recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Expr` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Expr` representable
|
||||
|
|
||||
LL | Plus(Box<Expr>, Box<Expr>),
|
||||
| ^^^^ ^ ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ LL | struct S {
|
|||
| ^^^^^^^^ recursive type has infinite size
|
||||
LL |
|
||||
LL | element: Option<S>
|
||||
| ------------------ recursive without indirection
|
||||
| --------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `S` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `S` representable
|
||||
|
|
||||
LL | element: Box<Option<S>>
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ LL | Class(ClassTypeSignature),
|
|||
LL | Array(TypeSignature),
|
||||
| ------------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ObjectType` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ObjectType` representable
|
||||
|
|
||||
LL | Array(Box<TypeSignature>),
|
||||
| ^^^^ ^
|
||||
|
||||
error[E0072]: recursive type `TypeSignature` has infinite size
|
||||
--> $DIR/issue-57271.rs:19:1
|
||||
|
|
@ -18,7 +21,10 @@ LL | Base(BaseType),
|
|||
LL | Object(ObjectType),
|
||||
| ---------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `TypeSignature` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `TypeSignature` representable
|
||||
|
|
||||
LL | Object(Box<ObjectType>),
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ LL | pub enum ElemDerived {
|
|||
LL | A(ElemDerived)
|
||||
| ----------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ElemDerived` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ElemDerived` representable
|
||||
|
|
||||
LL | A(Box<ElemDerived>)
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ LL | enum List<T> { Cons(T, List<T>), Nil }
|
|||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `List` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `List` representable
|
||||
|
|
||||
LL | enum List<T> { Cons(T, Box<List<T>>), Nil }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0391]: cycle detected when const-evaluating `FOO`
|
||||
--> $DIR/recursive-static-definition.rs:1:23
|
||||
--> $DIR/recursive-static-definition.rs:1:1
|
||||
|
|
||||
LL | pub static FOO: u32 = FOO;
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: ...which requires const-evaluating `FOO`...
|
||||
--> $DIR/recursive-static-definition.rs:1:1
|
||||
|
|
|
|||
|
|
@ -2,21 +2,27 @@ error[E0072]: recursive type `Baz` has infinite size
|
|||
--> $DIR/sized-cycle-note.rs:9:1
|
||||
|
|
||||
LL | struct Baz { q: Option<Foo> }
|
||||
| ^^^^^^^^^^ -------------- recursive without indirection
|
||||
| ^^^^^^^^^^ ----------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Baz` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable
|
||||
|
|
||||
LL | struct Baz { q: Box<Option<Foo>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error[E0072]: recursive type `Foo` has infinite size
|
||||
--> $DIR/sized-cycle-note.rs:11:1
|
||||
|
|
||||
LL | struct Foo { q: Option<Baz> }
|
||||
| ^^^^^^^^^^ -------------- recursive without indirection
|
||||
| ^^^^^^^^^^ ----------- recursive without indirection
|
||||
| |
|
||||
| recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | struct Foo { q: Box<Option<Baz>> }
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ LL | struct ListNode {
|
|||
| ^^^^^^^^^^^^^^^ recursive type has infinite size
|
||||
LL | head: u8,
|
||||
LL | tail: Option<ListNode>,
|
||||
| ---------------------- recursive without indirection
|
||||
| ---------------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ListNode` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable
|
||||
|
|
||||
LL | tail: Box<Option<ListNode>>,
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,14 @@ LL | | ListNode
|
|||
LL | | {
|
||||
LL | | head: u8,
|
||||
LL | | tail: Option<ListNode>,
|
||||
| | ---------------------- recursive without indirection
|
||||
| | ---------------- recursive without indirection
|
||||
LL | | }
|
||||
| |_^ recursive type has infinite size
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ListNode` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable
|
||||
|
|
||||
LL | tail: Box<Option<ListNode>>,
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,12 @@ error[E0072]: recursive type `Foo` has infinite size
|
|||
LL | struct Foo<'a> {
|
||||
| ^^^^^^^^^^^^^^ recursive type has infinite size
|
||||
LL | bar: Bar<'a>,
|
||||
| ------------ recursive without indirection
|
||||
| ------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Foo` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable
|
||||
|
|
||||
LL | bar: Box<Bar<'a>>,
|
||||
| ^^^^ ^
|
||||
|
||||
error[E0072]: recursive type `Bar` has infinite size
|
||||
--> $DIR/recursive-type-field.rs:8:1
|
||||
|
|
@ -14,18 +17,18 @@ error[E0072]: recursive type `Bar` has infinite size
|
|||
LL | struct Bar<'a> {
|
||||
| ^^^^^^^^^^^^^^ recursive type has infinite size
|
||||
LL | y: (Foo<'a>, Foo<'a>),
|
||||
| --------------------- recursive without indirection
|
||||
| ------------------ recursive without indirection
|
||||
LL | z: Option<Bar<'a>>,
|
||||
| ------------------ recursive without indirection
|
||||
| --------------- recursive without indirection
|
||||
...
|
||||
LL | d: [Bar<'a>; 1],
|
||||
| --------------- recursive without indirection
|
||||
| ------------ recursive without indirection
|
||||
LL | e: Foo<'a>,
|
||||
| ---------- recursive without indirection
|
||||
| ------- recursive without indirection
|
||||
LL | x: Bar<'a>,
|
||||
| ---------- recursive without indirection
|
||||
| ------- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `Bar` representable
|
||||
= help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ LL | struct T1 {
|
|||
| ^^^^^^^^^ recursive type has infinite size
|
||||
LL | foo: isize,
|
||||
LL | foolish: T1
|
||||
| ----------- recursive without indirection
|
||||
| -- recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `T1` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T1` representable
|
||||
|
|
||||
LL | foolish: Box<T1>
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ LL | union U {
|
|||
| ^^^^^^^ recursive type has infinite size
|
||||
LL | a: u8,
|
||||
LL | b: U,
|
||||
| ---- recursive without indirection
|
||||
| - recursive without indirection
|
||||
|
|
||||
= help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `U` representable
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `U` representable
|
||||
|
|
||||
LL | b: Box<U>,
|
||||
| ^^^^ ^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ LL | pub static mut B: () = unsafe { A = 1; };
|
|||
| ^^^^^ modifying a static's initial value from another static's initializer
|
||||
|
||||
error[E0391]: cycle detected when const-evaluating `C`
|
||||
--> $DIR/write-to-static-mut-in-static.rs:5:34
|
||||
--> $DIR/write-to-static-mut-in-static.rs:5:1
|
||||
|
|
||||
LL | pub static mut C: u32 = unsafe { C = 1; 0 };
|
||||
| ^^^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: ...which requires const-evaluating `C`...
|
||||
--> $DIR/write-to-static-mut-in-static.rs:5:1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue