-
Notifications
You must be signed in to change notification settings - Fork 472
Implement arbitrary-self dynamic method receivers #1038
Copy link
Copy link
Closed
rust-lang/rust
#95071Labels
A-interpreterArea: affects the core interpreterArea: affects the core interpreterC-bugCategory: This is a bug.Category: This is a bug.I-ICEImpact: makes Miri crash with some ICEImpact: makes Miri crash with some ICES-blockedStatus: blocked on something happening somewhere elseStatus: blocked on something happening somewhere else
Metadata
Metadata
Assignees
Labels
A-interpreterArea: affects the core interpreterArea: affects the core interpreterC-bugCategory: This is a bug.Category: This is a bug.I-ICEImpact: makes Miri crash with some ICEImpact: makes Miri crash with some ICES-blockedStatus: blocked on something happening somewhere elseStatus: blocked on something happening somewhere else
Type
Fields
Give feedbackNo fields configured for issues without a type.
The tests added in rust-lang/rust#54383 fail in Miri:
This is ICEing in this code:
https://github.com/rust-lang/rust/blob/7a76fe76f756895b8cda1e10398f2268656a2e0f/src/librustc_mir/interpret/terminator.rs#L430-L438
Clearly, that code assumes that only things that
builtin_derefsupports are receivers, and everything else is unsized -- hence theassert_mem_place, which fails.So, how does one implement arbitrary-self dynamic receivers? What actually happens at run-time here? I don't know.^^
Cc @eddyb @mikeyhew