Skip to content

Commit de63811

Browse files
committed
improve test
1 parent 8eead1f commit de63811

File tree

1 file changed

+45
-39
lines changed

1 file changed

+45
-39
lines changed

crates/hir-ty/src/tests/simple.rs

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1989,55 +1989,61 @@ fn coroutine_types_inferred() {
19891989
use core::ops::{Coroutine, CoroutineState};
19901990
use core::pin::Pin;
19911991
1992-
fn f(v: i64) {}
1992+
fn as_u8(v: u8) {}
1993+
fn as_u16(v: u16) {}
19931994
fn 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

Comments
 (0)