Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/regression.rs')
-rw-r--r--crates/hir-ty/src/tests/regression.rs37
1 files changed, 21 insertions, 16 deletions
diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs
index c4c17a93c9..25061e1dbd 100644
--- a/crates/hir-ty/src/tests/regression.rs
+++ b/crates/hir-ty/src/tests/regression.rs
@@ -773,7 +773,7 @@ fn issue_4800() {
"#,
expect![[r#"
379..383 'self': &'? mut PeerSet<D>
- 401..424 '{ ... }': dyn Future<Output = ()> + '?
+ 401..424 '{ ... }': dyn Future<Output = ()> + 'static
411..418 'loop {}': !
416..418 '{}': ()
575..579 'self': &'? mut Self
@@ -781,6 +781,9 @@ fn issue_4800() {
);
}
+// FIXME(next-solver): Though `Repeat: IntoIterator` does not hold here, we
+// should be able to do better at given type hints (with Chalk, we did `IntoIterator::Item<Repeat<...>>`)
+// From what I can tell, the point of this test is to not panic though.
#[test]
fn issue_4966() {
check_infer(
@@ -824,11 +827,11 @@ fn issue_4966() {
311..317 'repeat': Repeat<Map<impl Fn(&'? f64) -> f64>>
320..345 'Repeat...nner }': Repeat<Map<impl Fn(&'? f64) -> f64>>
338..343 'inner': Map<impl Fn(&'? f64) -> f64>
- 356..359 'vec': Vec<IntoIterator::Item<Repeat<Map<impl Fn(&'? f64) -> f64>>>>
- 362..371 'from_iter': fn from_iter<IntoIterator::Item<Repeat<Map<impl Fn(&'? f64) -> f64>>>, Repeat<Map<impl Fn(&'? f64) -> f64>>>(Repeat<Map<impl Fn(&'? f64) -> f64>>) -> Vec<IntoIterator::Item<Repeat<Map<impl Fn(&'? f64) -> f64>>>>
- 362..379 'from_i...epeat)': Vec<IntoIterator::Item<Repeat<Map<impl Fn(&'? f64) -> f64>>>>
+ 356..359 'vec': Vec<{unknown}>
+ 362..371 'from_iter': fn from_iter<{unknown}, Repeat<Map<impl Fn(&'? f64) -> f64>>>(Repeat<Map<impl Fn(&'? f64) -> f64>>) -> Vec<{unknown}>
+ 362..379 'from_i...epeat)': Vec<{unknown}>
372..378 'repeat': Repeat<Map<impl Fn(&'? f64) -> f64>>
- 386..389 'vec': Vec<IntoIterator::Item<Repeat<Map<impl Fn(&'? f64) -> f64>>>>
+ 386..389 'vec': Vec<{unknown}>
386..399 'vec.foo_bar()': {unknown}
"#]],
);
@@ -1224,6 +1227,8 @@ fn mamba(a: U32!(), p: u32) -> u32 {
#[test]
fn for_loop_block_expr_iterable() {
+ // FIXME(next-solver): it would be nice to be able to hint `IntoIterator::IntoIter<()>` instead of just `{unknown}`
+ // (even though `(): IntoIterator` does not hold)
check_infer(
r#"
//- minicore: iterator
@@ -1236,17 +1241,17 @@ fn test() {
expect![[r#"
10..68 '{ ... } }': ()
16..66 'for _ ... }': fn into_iter<()>(()) -> <() as IntoIterator>::IntoIter
- 16..66 'for _ ... }': IntoIterator::IntoIter<()>
+ 16..66 'for _ ... }': {unknown}
16..66 'for _ ... }': !
- 16..66 'for _ ... }': IntoIterator::IntoIter<()>
- 16..66 'for _ ... }': &'? mut IntoIterator::IntoIter<()>
- 16..66 'for _ ... }': fn next<IntoIterator::IntoIter<()>>(&'? mut IntoIterator::IntoIter<()>) -> Option<<IntoIterator::IntoIter<()> as Iterator>::Item>
- 16..66 'for _ ... }': Option<IntoIterator::Item<()>>
+ 16..66 'for _ ... }': {unknown}
+ 16..66 'for _ ... }': &'? mut {unknown}
+ 16..66 'for _ ... }': fn next<{unknown}>(&'? mut {unknown}) -> Option<<{unknown} as Iterator>::Item>
+ 16..66 'for _ ... }': Option<{unknown}>
16..66 'for _ ... }': ()
16..66 'for _ ... }': ()
16..66 'for _ ... }': ()
16..66 'for _ ... }': ()
- 20..21 '_': IntoIterator::Item<()>
+ 20..21 '_': {unknown}
25..39 '{ let x = 0; }': ()
31..32 'x': i32
35..36 '0': i32
@@ -1283,7 +1288,6 @@ fn test() {
#[test]
fn bug_11242() {
- // FIXME: wrong, should be u32
check_types(
r#"
fn foo<A, B>()
@@ -1292,7 +1296,7 @@ where
B: IntoIterator<Item = usize>,
{
let _x: <A as IntoIterator>::Item;
- // ^^ {unknown}
+ // ^^ u32
}
pub trait Iterator {
@@ -1495,7 +1499,7 @@ fn regression_11688_2() {
fn regression_11688_3() {
check_types(
r#"
- //- minicore: iterator
+ //- minicore: iterator, dispatch_from_dyn
struct Ar<T, const N: u8>(T);
fn f<const LEN: usize, T, const BASE: u8>(
num_zeros: usize,
@@ -1514,6 +1518,7 @@ fn regression_11688_3() {
fn regression_11688_4() {
check_types(
r#"
+ //- minicore: dispatch_from_dyn
trait Bar<const C: usize> {
fn baz(&self) -> [i32; C];
}
@@ -2035,11 +2040,11 @@ fn issue_17734() {
r#"
fn test() {
let x = S::foo::<'static, &()>(&S);
- // ^ Wrap<'?, ()>
+ // ^ Wrap<'static, ()>
let x = S::foo::<&()>(&S);
// ^ Wrap<'?, ()>
let x = S.foo::<'static, &()>();
- // ^ Wrap<'?, ()>
+ // ^ Wrap<'static, ()>
let x = S.foo::<&()>();
// ^ Wrap<'?, ()>
}