File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+ // Non-regression test ICE from issue #105809 and duplicates.
2+
3+ // build-pass: the ICE is during codegen
4+ // compile-flags: --edition 2018 -Zmir-opt-level=1
5+
6+ use std:: { future:: Future , pin:: Pin } ;
7+
8+ // Create a `T` without affecting analysis like `loop {}`.
9+ fn create < T > ( ) -> T {
10+ loop { }
11+ }
12+
13+ async fn trivial_future ( ) { }
14+
15+ struct Connection < H > {
16+ _h : H ,
17+ }
18+
19+ async fn complex_future < H > ( conn : & Connection < H > ) {
20+ let small_fut = async move {
21+ let _ = conn;
22+ trivial_future ( ) . await ;
23+ } ;
24+
25+ let mut tuple = ( small_fut, ) ;
26+ let ( small_fut_again, ) = & mut tuple;
27+ let _ = small_fut_again;
28+ }
29+
30+ fn main ( ) {
31+ let mut fut = complex_future ( & Connection { _h : ( ) } ) ;
32+
33+ let mut cx = create ( ) ;
34+ let future = unsafe { Pin :: new_unchecked ( & mut fut) } ;
35+ let _ = future. poll ( & mut cx) ;
36+ }
You can’t perform that action at this time.
0 commit comments