@@ -1989,55 +1989,61 @@ fn coroutine_types_inferred() {
19891989use core::ops::{Coroutine, CoroutineState};
19901990use core::pin::Pin;
19911991
1992- fn f(v: i64) {}
1992+ fn as_u8(v: u8) {}
1993+ fn as_u16(v: u16) {}
19931994fn test() {
1994- let mut g = |r| {
1995+ let mut coroutine = |r| {
19951996 let a = yield 0;
19961997 let a = yield 1;
19971998 let a = yield 2;
1998- "return value"
1999+ 3
19992000 };
20002001
2001- match Pin::new(&mut g ).resume(0usize ) {
2002- CoroutineState::Yielded(y) => { f (y); }
2003- CoroutineState::Complete(r) => {}
2002+ match Pin::new(&mut coroutine ).resume(0i8 ) {
2003+ CoroutineState::Yielded(y) => { as_u8 (y); }
2004+ CoroutineState::Complete(r) => { as_u16(y); }
20042005 }
20052006}
20062007 "# ,
20072008 expect ! [ [ r#"
2008- 70..71 'v': i64
2009- 78..80 '{}': ()
2010- 91..362 '{ ... } }': ()
2011- 101..106 'mut g': |usize| yields i64 -> &str
2012- 109..218 '|r| { ... }': |usize| yields i64 -> &str
2013- 110..111 'r': usize
2014- 113..218 '{ ... }': &str
2015- 127..128 'a': usize
2016- 131..138 'yield 0': usize
2017- 137..138 '0': i64
2018- 152..153 'a': usize
2019- 156..163 'yield 1': usize
2020- 162..163 '1': i64
2021- 177..178 'a': usize
2022- 181..188 'yield 2': usize
2023- 187..188 '2': i64
2024- 198..212 '"return value"': &str
2025- 225..360 'match ... }': ()
2026- 231..239 'Pin::new': fn new<&mut |usize| yields i64 -> &str>(&mut |usize| yields i64 -> &str) -> Pin<&mut |usize| yields i64 -> &str>
2027- 231..247 'Pin::n...mut g)': Pin<&mut |usize| yields i64 -> &str>
2028- 231..262 'Pin::n...usize)': CoroutineState<i64, &str>
2029- 240..246 '&mut g': &mut |usize| yields i64 -> &str
2030- 245..246 'g': |usize| yields i64 -> &str
2031- 255..261 '0usize': usize
2032- 273..299 'Corout...ded(y)': CoroutineState<i64, &str>
2033- 297..298 'y': i64
2034- 303..312 '{ f(y); }': ()
2035- 305..306 'f': fn f(i64)
2036- 305..309 'f(y)': ()
2037- 307..308 'y': i64
2038- 321..348 'Corout...ete(r)': CoroutineState<i64, &str>
2039- 346..347 'r': &str
2040- 352..354 '{}': ()
2009+ 74..75 'v': u8
2010+ 81..83 '{}': ()
2011+ 94..95 'v': u16
2012+ 102..104 '{}': ()
2013+ 115..402 '{ ... } }': ()
2014+ 125..138 'mut coroutine': |i8| yields u8 -> i32
2015+ 141..237 '|r| { ... }': |i8| yields u8 -> i32
2016+ 142..143 'r': i8
2017+ 145..237 '{ ... }': i32
2018+ 159..160 'a': i8
2019+ 163..170 'yield 0': i8
2020+ 169..170 '0': u8
2021+ 184..185 'a': i8
2022+ 188..195 'yield 1': i8
2023+ 194..195 '1': u8
2024+ 209..210 'a': i8
2025+ 213..220 'yield 2': i8
2026+ 219..220 '2': u8
2027+ 230..231 '3': i32
2028+ 244..400 'match ... }': ()
2029+ 250..258 'Pin::new': fn new<&mut |i8| yields u8 -> i32>(&mut |i8| yields u8 -> i32) -> Pin<&mut |i8| yields u8 -> i32>
2030+ 250..274 'Pin::n...utine)': Pin<&mut |i8| yields u8 -> i32>
2031+ 250..286 'Pin::n...e(0i8)': CoroutineState<u8, i32>
2032+ 259..273 '&mut coroutine': &mut |i8| yields u8 -> i32
2033+ 264..273 'coroutine': |i8| yields u8 -> i32
2034+ 282..285 '0i8': i8
2035+ 297..323 'Corout...ded(y)': CoroutineState<u8, i32>
2036+ 321..322 'y': u8
2037+ 327..340 '{ as_u8(y); }': ()
2038+ 329..334 'as_u8': fn as_u8(u8)
2039+ 329..337 'as_u8(y)': ()
2040+ 335..336 'y': u8
2041+ 349..376 'Corout...ete(r)': CoroutineState<u8, i32>
2042+ 374..375 'r': i32
2043+ 380..394 '{ as_u16(y); }': ()
2044+ 382..388 'as_u16': fn as_u16(u16)
2045+ 382..391 'as_u16(y)': ()
2046+ 389..390 'y': u16
20412047 "# ] ] ,
20422048 ) ;
20432049}
0 commit comments