This commit marks temporaries from MIR construction as internal such that they are skipped in `sanitize_witness` (where each MIR local is checked to have been contained within the generator interior computed during typeck). This resolves an ICE whereby the construction of checked addition introduced a `(u64, bool)` temporary which was not in the HIR and thus not in the generator interior. Signed-off-by: David Wood <david@davidtw.co>
31 lines
464 B
Rust
31 lines
464 B
Rust
// build-pass
|
|
// compile-flags:-Copt-level=0
|
|
// edition:2018
|
|
|
|
struct S<T>(std::marker::PhantomData<T>);
|
|
|
|
impl<T> std::ops::Deref for S<T> {
|
|
type Target = T;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
todo!()
|
|
}
|
|
}
|
|
impl<T> std::ops::DerefMut for S<T> {
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
todo!()
|
|
}
|
|
}
|
|
|
|
async fn new() -> S<u64> {
|
|
todo!()
|
|
}
|
|
|
|
async fn crash() {
|
|
*new().await = 1 + 1;
|
|
}
|
|
|
|
fn main() {
|
|
let _ = crash();
|
|
}
|