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.rs242
1 files changed, 127 insertions, 115 deletions
diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs
index 6a3f228621..2ba1e2341b 100644
--- a/crates/hir-ty/src/tests/regression.rs
+++ b/crates/hir-ty/src/tests/regression.rs
@@ -88,6 +88,7 @@ fn bug_651() {
#[test]
fn recursive_vars() {
+ // FIXME: This isn't nice, but I guess as long as we don't hang/crash that's fine?
check_infer(
r#"
fn test() {
@@ -97,12 +98,12 @@ fn recursive_vars() {
"#,
expect![[r#"
10..47 '{ ...&y]; }': ()
- 20..21 'y': {unknown}
- 24..31 'unknown': {unknown}
- 37..44 '[y, &y]': [{unknown}; 2]
- 38..39 'y': {unknown}
- 41..43 '&y': &'? {unknown}
- 42..43 'y': {unknown}
+ 20..21 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 24..31 'unknown': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 37..44 '[y, &y]': [&'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}; 2]
+ 38..39 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 41..43 '&y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 42..43 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
"#]],
);
}
@@ -119,19 +120,19 @@ fn recursive_vars_2() {
"#,
expect![[r#"
10..79 '{ ...x)]; }': ()
- 20..21 'x': &'? {unknown}
- 24..31 'unknown': &'? {unknown}
- 41..42 'y': {unknown}
- 45..52 'unknown': {unknown}
- 58..76 '[(x, y..., &x)]': [(&'? {unknown}, {unknown}); 2]
- 59..65 '(x, y)': (&'? {unknown}, {unknown})
- 60..61 'x': &'? {unknown}
- 63..64 'y': {unknown}
- 67..75 '(&y, &x)': (&'? {unknown}, {unknown})
- 68..70 '&y': &'? {unknown}
- 69..70 'y': {unknown}
- 72..74 '&x': &'? &'? {unknown}
- 73..74 'x': &'? {unknown}
+ 20..21 'x': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 24..31 'unknown': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 41..42 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 45..52 'unknown': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 58..76 '[(x, y..., &x)]': [(&'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}, &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}); 2]
+ 59..65 '(x, y)': (&'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}, &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown})
+ 60..61 'x': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 63..64 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 67..75 '(&y, &x)': (&'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}, &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown})
+ 68..70 '&y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 69..70 'y': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 72..74 '&x': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 73..74 'x': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
"#]],
);
}
@@ -268,37 +269,37 @@ fn infer_std_crash_5() {
expect![[r#"
26..322 '{ ... } }': ()
32..320 'for co... }': fn into_iter<{unknown}>({unknown}) -> <{unknown} as IntoIterator>::IntoIter
- 32..320 'for co... }': {unknown}
+ 32..320 'for co... }': <{unknown} as IntoIterator>::IntoIter
32..320 'for co... }': !
32..320 'for co... }': {unknown}
32..320 'for co... }': &'? mut {unknown}
32..320 'for co... }': fn next<{unknown}>(&'? mut {unknown}) -> Option<<{unknown} as Iterator>::Item>
- 32..320 'for co... }': Option<{unknown}>
+ 32..320 'for co... }': Option<<{unknown} as Iterator>::Item>
32..320 'for co... }': ()
32..320 'for co... }': ()
32..320 'for co... }': ()
32..320 'for co... }': ()
- 36..43 'content': {unknown}
+ 36..43 'content': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
47..60 'doesnt_matter': {unknown}
61..320 '{ ... }': ()
- 75..79 'name': &'? {unknown}
- 82..166 'if doe... }': &'? {unknown}
+ 75..79 'name': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 82..166 'if doe... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
85..98 'doesnt_matter': bool
- 99..128 '{ ... }': &'? {unknown}
- 113..118 'first': &'? {unknown}
- 134..166 '{ ... }': &'? {unknown}
- 148..156 '&content': &'? {unknown}
- 149..156 'content': {unknown}
- 181..188 'content': &'? {unknown}
- 191..313 'if ICE... }': &'? {unknown}
- 194..231 'ICE_RE..._VALUE': {unknown}
+ 99..128 '{ ... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 113..118 'first': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 134..166 '{ ... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 148..156 '&content': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 149..156 'content': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 181..188 'content': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 191..313 'if ICE... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 194..231 'ICE_RE..._VALUE': bool
194..247 'ICE_RE...&name)': bool
- 241..246 '&name': &'? &'? {unknown}
- 242..246 'name': &'? {unknown}
- 248..276 '{ ... }': &'? {unknown}
- 262..266 'name': &'? {unknown}
- 282..313 '{ ... }': {unknown}
- 296..303 'content': {unknown}
+ 241..246 '&name': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 242..246 'name': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 248..276 '{ ... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 262..266 'name': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 282..313 '{ ... }': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
+ 296..303 'content': &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? &'? {unknown}
"#]],
);
}
@@ -394,7 +395,7 @@ fn issue_2669() {
r#"
trait A {}
trait Write {}
- struct Response<T> {}
+ struct Response<T>(T);
trait D {
fn foo();
@@ -410,13 +411,13 @@ fn issue_2669() {
}
"#,
expect![[r#"
- 119..214 '{ ... }': ()
- 129..132 'end': fn end<{unknown}>()
- 129..134 'end()': ()
- 163..208 '{ ... }': ()
- 181..183 '_x': !
- 190..197 'loop {}': !
- 195..197 '{}': ()
+ 120..215 '{ ... }': ()
+ 130..133 'end': fn end<{unknown}>()
+ 130..135 'end()': ()
+ 164..209 '{ ... }': ()
+ 182..184 '_x': !
+ 191..198 'loop {}': !
+ 196..198 '{}': ()
"#]],
)
}
@@ -628,7 +629,7 @@ fn issue_4053_diesel_where_clauses() {
65..69 'self': Self
267..271 'self': Self
466..470 'self': SelectStatement<F, S, D, W, O, LOf, {unknown}, {unknown}>
- 488..522 '{ ... }': ()
+ 488..522 '{ ... }': <SelectStatement<F, S, D, W, O, LOf, {unknown}, {unknown}> as BoxedDsl<DB>>::Output
498..502 'self': SelectStatement<F, S, D, W, O, LOf, {unknown}, {unknown}>
498..508 'self.order': O
498..515 'self.o...into()': dyn QueryFragment<DB> + '?
@@ -799,7 +800,7 @@ fn issue_4966() {
struct Map<F> { f: F }
- struct Vec<T> {}
+ struct Vec<T> { p: *mut T }
impl<T> core::ops::Deref for Vec<T> {
type Target = [T];
@@ -818,23 +819,23 @@ fn issue_4966() {
}
"#,
expect![[r#"
- 225..229 'iter': T
- 244..246 '{}': Vec<A>
- 258..402 '{ ...r(); }': ()
- 268..273 'inner': Map<impl Fn(&'? f64) -> f64>
- 276..300 'Map { ... 0.0 }': Map<impl Fn(&'? f64) -> f64>
- 285..298 '|_: &f64| 0.0': impl Fn(&'? f64) -> f64
- 286..287 '_': &'? f64
- 295..298 '0.0': f64
- 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<{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<{unknown}>
- 386..399 'vec.foo_bar()': {unknown}
+ 236..240 'iter': T
+ 255..257 '{}': Vec<A>
+ 269..413 '{ ...r(); }': ()
+ 279..284 'inner': Map<impl Fn(&'? f64) -> f64>
+ 287..311 'Map { ... 0.0 }': Map<impl Fn(&'? f64) -> f64>
+ 296..309 '|_: &f64| 0.0': impl Fn(&'? f64) -> f64
+ 297..298 '_': &'? f64
+ 306..309 '0.0': f64
+ 322..328 'repeat': Repeat<Map<impl Fn(&'? f64) -> f64>>
+ 331..356 'Repeat...nner }': Repeat<Map<impl Fn(&'? f64) -> f64>>
+ 349..354 'inner': Map<impl Fn(&'? f64) -> f64>
+ 367..370 'vec': Vec<{unknown}>
+ 373..382 'from_iter': fn from_iter<{unknown}, Repeat<Map<impl Fn(&'? f64) -> f64>>>(Repeat<Map<impl Fn(&'? f64) -> f64>>) -> Vec<{unknown}>
+ 373..390 'from_i...epeat)': Vec<{unknown}>
+ 383..389 'repeat': Repeat<Map<impl Fn(&'? f64) -> f64>>
+ 397..400 'vec': Vec<{unknown}>
+ 397..410 'vec.foo_bar()': {unknown}
"#]],
);
}
@@ -843,37 +844,40 @@ fn issue_4966() {
fn issue_6628() {
check_infer(
r#"
-//- minicore: fn
-struct S<T>();
+//- minicore: fn, phantom_data
+use core::marker::PhantomData;
+
+struct S<T>(PhantomData<T>);
impl<T> S<T> {
fn f(&self, _t: T) {}
fn g<F: FnOnce(&T)>(&self, _f: F) {}
}
fn main() {
- let s = S();
+ let s = S(PhantomData);
s.g(|_x| {});
s.f(10);
}
"#,
expect![[r#"
- 40..44 'self': &'? S<T>
- 46..48 '_t': T
- 53..55 '{}': ()
- 81..85 'self': &'? S<T>
- 87..89 '_f': F
- 94..96 '{}': ()
- 109..160 '{ ...10); }': ()
- 119..120 's': S<i32>
- 123..124 'S': fn S<i32>() -> S<i32>
- 123..126 'S()': S<i32>
- 132..133 's': S<i32>
- 132..144 's.g(|_x| {})': ()
- 136..143 '|_x| {}': impl FnOnce(&'? i32)
- 137..139 '_x': &'? i32
- 141..143 '{}': ()
- 150..151 's': S<i32>
- 150..157 's.f(10)': ()
- 154..156 '10': i32
+ 86..90 'self': &'? S<T>
+ 92..94 '_t': T
+ 99..101 '{}': ()
+ 127..131 'self': &'? S<T>
+ 133..135 '_f': F
+ 140..142 '{}': ()
+ 155..217 '{ ...10); }': ()
+ 165..166 's': S<i32>
+ 169..170 'S': fn S<i32>(PhantomData<i32>) -> S<i32>
+ 169..183 'S(PhantomData)': S<i32>
+ 171..182 'PhantomData': PhantomData<i32>
+ 189..190 's': S<i32>
+ 189..201 's.g(|_x| {})': ()
+ 193..200 '|_x| {}': impl FnOnce(&'? i32)
+ 194..196 '_x': &'? i32
+ 198..200 '{}': ()
+ 207..208 's': S<i32>
+ 207..214 's.f(10)': ()
+ 211..213 '10': i32
"#]],
);
}
@@ -931,7 +935,7 @@ fn lifetime_from_chalk_during_deref() {
check_types(
r#"
//- minicore: deref
-struct Box<T: ?Sized> {}
+struct Box<T: ?Sized>(T);
impl<T: ?Sized> core::ops::Deref for Box<T> {
type Target = T;
@@ -964,6 +968,9 @@ fn clone_iter<T>(s: Iter<T>) {
fn issue_8686() {
check_infer(
r#"
+//- minicore: phantom_data
+use core::marker::PhantomData;
+
pub trait Try: FromResidual {
type Output;
type Residual;
@@ -972,28 +979,32 @@ pub trait FromResidual<R = <Self as Try>::Residual> {
fn from_residual(residual: R) -> Self;
}
-struct ControlFlow<B, C>;
+struct ControlFlow<B, C>(PhantomData<(B, C)>);
impl<B, C> Try for ControlFlow<B, C> {
type Output = C;
type Residual = ControlFlow<B, !>;
}
impl<B, C> FromResidual for ControlFlow<B, C> {
- fn from_residual(r: ControlFlow<B, !>) -> Self { ControlFlow }
+ fn from_residual(r: ControlFlow<B, !>) -> Self { ControlFlow(PhantomData) }
}
fn test() {
- ControlFlow::from_residual(ControlFlow::<u32, !>);
+ ControlFlow::from_residual(ControlFlow::<u32, !>(PhantomData));
}
"#,
expect![[r#"
- 144..152 'residual': R
- 365..366 'r': ControlFlow<B, !>
- 395..410 '{ ControlFlow }': ControlFlow<B, C>
- 397..408 'ControlFlow': ControlFlow<B, C>
- 424..482 '{ ...!>); }': ()
- 430..456 'Contro...sidual': fn from_residual<ControlFlow<u32, {unknown}>, ControlFlow<u32, !>>(ControlFlow<u32, !>) -> ControlFlow<u32, {unknown}>
- 430..479 'Contro...2, !>)': ControlFlow<u32, {unknown}>
- 457..478 'Contro...32, !>': ControlFlow<u32, !>
+ 176..184 'residual': R
+ 418..419 'r': ControlFlow<B, !>
+ 448..476 '{ Cont...ata) }': ControlFlow<B, C>
+ 450..461 'ControlFlow': fn ControlFlow<B, C>(PhantomData<(B, C)>) -> ControlFlow<B, C>
+ 450..474 'Contro...mData)': ControlFlow<B, C>
+ 462..473 'PhantomData': PhantomData<(B, C)>
+ 490..561 '{ ...a)); }': ()
+ 496..522 'Contro...sidual': fn from_residual<ControlFlow<u32, {unknown}>, ControlFlow<u32, !>>(ControlFlow<u32, !>) -> ControlFlow<u32, {unknown}>
+ 496..558 'Contro...Data))': ControlFlow<u32, {unknown}>
+ 523..544 'Contro...32, !>': fn ControlFlow<u32, !>(PhantomData<(u32, !)>) -> ControlFlow<u32, !>
+ 523..557 'Contro...mData)': ControlFlow<u32, !>
+ 545..556 'PhantomData': PhantomData<(u32, !)>
"#]],
);
}
@@ -1052,12 +1063,13 @@ fn impl_trait_in_option_9530() {
check_types(
r#"
//- minicore: sized
-struct Option<T>;
+struct Option<T>(T);
impl<T> Option<T> {
fn unwrap(self) -> T { loop {} }
}
-fn make() -> Option<impl Copy> { Option }
+fn make() -> Option<impl Copy> { Option(()) }
trait Copy {}
+impl Copy for () {}
fn test() {
let o = make();
o.unwrap();
@@ -1163,9 +1175,9 @@ pub trait BitView {
pub struct Lsb0;
-pub struct BitArray<V: BitView> { }
+pub struct BitArray<V: BitView>(V);
-pub struct BitSlice<T> { }
+pub struct BitSlice<T>(T);
impl<V: BitView> core::ops::Deref for BitArray<V> {
type Target = BitSlice<V::Store>;
@@ -1243,12 +1255,12 @@ fn test() {
expect![[r#"
10..68 '{ ... } }': ()
16..66 'for _ ... }': fn into_iter<()>(()) -> <() as IntoIterator>::IntoIter
- 16..66 'for _ ... }': {unknown}
+ 16..66 'for _ ... }': <() as IntoIterator>::IntoIter
16..66 'for _ ... }': !
- 16..66 'for _ ... }': {unknown}
- 16..66 'for _ ... }': &'? mut {unknown}
+ 16..66 'for _ ... }': <() as IntoIterator>::IntoIter
+ 16..66 'for _ ... }': &'? mut <() as IntoIterator>::IntoIter
16..66 'for _ ... }': fn next<{unknown}>(&'? mut {unknown}) -> Option<<{unknown} as Iterator>::Item>
- 16..66 'for _ ... }': Option<{unknown}>
+ 16..66 'for _ ... }': Option<<{unknown} as Iterator>::Item>
16..66 'for _ ... }': ()
16..66 'for _ ... }': ()
16..66 'for _ ... }': ()
@@ -1779,7 +1791,7 @@ fn regression_14844() {
r#"
pub type Ty = Unknown;
-pub struct Inner<T>();
+pub struct Inner<T>(T);
pub struct Outer {
pub inner: Inner<Ty>,
@@ -1787,7 +1799,7 @@ pub struct Outer {
fn main() {
_ = Outer {
- inner: Inner::<i32>(),
+ inner: Inner::<i32>(0),
};
}
"#,
@@ -1939,7 +1951,7 @@ fn main() {
Alias::Braced;
//^^^^^^^^^^^^^ {unknown}
let Alias::Braced = loop {};
- //^^^^^^^^^^^^^ !
+ //^^^^^^^^^^^^^ {unknown}
let Alias::Braced(..) = loop {};
//^^^^^^^^^^^^^^^^^ Enum
@@ -2017,12 +2029,12 @@ fn tait_async_stack_overflow_17199() {
fn lifetime_params_move_param_defaults() {
check_types(
r#"
-pub struct Thing<'s, T = u32>;
+pub struct Thing<'s, T = u32>(&'s T);
impl <'s> Thing<'s> {
pub fn new() -> Thing<'s> {
- Thing
- //^^^^^ Thing<'?, u32>
+ Thing(&0)
+ //^^^^^^^^^ Thing<'?, u32>
}
}
@@ -2042,11 +2054,11 @@ fn issue_17734() {
r#"
fn test() {
let x = S::foo::<'static, &()>(&S);
- // ^ Wrap<'static, ()>
+ // ^ Wrap<'?, ()>
let x = S::foo::<&()>(&S);
// ^ Wrap<'?, ()>
let x = S.foo::<'static, &()>();
- // ^ Wrap<'static, ()>
+ // ^ Wrap<'?, ()>
let x = S.foo::<&()>();
// ^ Wrap<'?, ()>
}
@@ -2059,7 +2071,7 @@ impl S {
}
}
-struct Wrap<'a, T>(T);
+struct Wrap<'a, T>(&'a T);
trait Trait<'a> {
type Proj;
}