Skip to content

Implicit Sized bounds #9807

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Aug 12, 2021
Merged

Implicit Sized bounds #9807

merged 14 commits into from
Aug 12, 2021

Conversation

iDawer
Copy link
Contributor

@iDawer iDawer commented Aug 7, 2021

This should close #8984

hir_ty:

  • Type parameters, associated types and impl Trait are Sized by deafault except Self in a trait.
  • Implicit Sized bound is added to end of predicate list. It does not check if such bound is present already. Also it does not track the bound is implicit.
  • Allowed ambiguous unsize coercion if Chalk returns definite guidance.
  • Allowed ambiguous autoderef if Chalk returns definite guidance.

hir_def:

  • ItemTree pretty printing shows ?Sized bounds.

HirDisplay:

  • impl Trait with weird bounds rendered correctly.
  • Sized/?Sized bounds are not shown if they are default.

Perf

./target/rust-analyzer-baseline_8a843113 -q analysis-stats --memory-usage .

Database loaded:     1.63s, 287minstr, 91mb
  crates: 38, mods: 741, decls: 15914, fns: 11835
Item Collection:     26.80s, 73ginstr, 338mb
  exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 174
Inference:           50.28s, 116ginstr, 516mb
Total:               77.08s, 189ginstr, 855mb

./target/rust-analyzer-sized-fixed_ambig_coercion-de074fe6 -q analysis-stats --memory-usage .

Database loaded:     1.63s, 287minstr, 91mb
  crates: 38, mods: 741, decls: 15914, fns: 11835
Item Collection:     26.95s, 73ginstr, 338mb
  exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 166
Inference:           96.39s, 234ginstr, 543mb
Total:               123.33s, 307ginstr, 881mb

@iDawer
Copy link
Contributor Author

iDawer commented Aug 7, 2021

I didn't expect that much hit to performance. Maybe I did something weird

@iDawer iDawer force-pushed the hir_ty.implicit-sized branch from afbad9f to 1489872 Compare August 7, 2021 19:55
@matklad
Copy link
Member

matklad commented Aug 8, 2021

r? @flodiebold

@matklad
Copy link
Member

matklad commented Aug 8, 2021

@iDawer to debug perf, it might (or might not) be helpful to run integrated_highlighting_benchmark with profile::init_from("*>1"); or something like that.

@lnicola
Copy link
Member

lnicola commented Aug 8, 2021

The increase in unknown types is also a bit strange.

@flodiebold
Copy link
Member

I don't see anything particularly weird. Part of the increase comes from all the Sized obligations for generic function calls being checked; adding a hack that skips those obligations helps a bit. I suspect the larger part comes from trait environments for all generic functions being bigger and more different, which probably reduces opportunities for reusing trait solving results.

I'd also like to look into the increase in unknown types, yeah.

@iDawer
Copy link
Contributor Author

iDawer commented Aug 8, 2021

@iDawer to debug perf, it might (or might not) be helpful to run integrated_highlighting_benchmark with profile::init_from("*>1"); or something like that.

highlighting-bench-baseline.log
highlighting-bench-sized.log
+15% time coming from resolve_obligations_as_possible:

 1350ms - highlight
...
      978ms - infer:wait @ per_query_memory_usage
          978ms - infer_query
              ...
              566ms - resolve_obligations_as_possible (19494 calls)
              ...
 1562ms - highlight
...
     1191ms - infer:wait @ per_query_memory_usage
         1190ms - infer_query
              ...
              779ms - resolve_obligations_as_possible (19257 calls)
              ...

@flodiebold
Copy link
Member

flodiebold commented Aug 8, 2021

It seems the problem is mostly the larger environments and additional Sized bounds to check for impls; I think Chalk isn't very performant in dealing with environment clauses currently.

I doubt we'll find an easy solution to the performance impact, and we should probably merge it anyway (tomorrow). We should look into the unknown types though.

@iDawer iDawer marked this pull request as draft August 8, 2021 17:19
@iDawer
Copy link
Contributor Author

iDawer commented Aug 8, 2021

Screenshot_20210808_223126
Didn't dig deep yet. (Inference variables?)

Diff of verbose stats (2.5k lines)

Sources from 8a84311

diff --git a/stats-baseline.log b/stats-sized.log
index a8a7558..2623153 100644
--- a/stats-baseline.log
+++ b/stats-sized.log
@@ -1,6 +1,6 @@
-Database loaded:     2.12s, 287minstr, 91mb
+Database loaded:     2.12s, 288minstr, 91mb
   crates: 38, mods: 741, decls: 15914, fns: 11835
-Item Collection:     33.73s, 73ginstr, 338mb
+Item Collection:     31.68s, 73ginstr, 338mb
 processing: main (/home/dawer/source/rust-analyzer/xtask/src/main.rs 608..1507)
 In main: 86 exprs, 0 unknown, 0 partial
 processing: project_root (/home/dawer/source/rust-analyzer/xtask/src/main.rs 1509..1723)
@@ -95,16 +95,12 @@ In resolve_path: 14 exprs, 0 unknown, 0 partial
 processing: relevant_crates (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 3902..4137)
 In relevant_crates: 12 exprs, 0 unknown, 0 partial
 processing: parse (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 1616..1824)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Expected &dyn SourceDatabase, got &DB
 In parse: 5 exprs, 0 unknown, 0 partial
 processing: crate_graph (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 1824..1999)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Expected &dyn SourceDatabase, got &DB
 In crate_graph: 4 exprs, 0 unknown, 0 partial
 processing: set_crate_graph (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 1999..2209)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Expected &mut dyn SourceDatabase, got &mut DB
 In set_crate_graph: 5 exprs, 0 unknown, 0 partial
 processing: set_crate_graph_with_durability (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 2209..2541)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Expected &mut dyn SourceDatabase, got &mut DB
 In set_crate_graph_with_durability: 6 exprs, 0 unknown, 0 partial
 processing: in_db (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 2601..3017)
 In in_db: 4 exprs, 0 unknown, 0 partial
@@ -121,7 +117,9 @@ In in_db_mut: 4 exprs, 0 unknown, 0 partial
 processing: query_storage (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 8297..8445)
 In query_storage: 4 exprs, 0 unknown, 0 partial
 processing: new (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 8655..8880)
-In new: 12 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 60:0-71:1: Unknown type
+In new: 12 exprs, 2 unknown, 6 partial
 processing: fmt_index (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 8914..9290)
 In fmt_index: 42 exprs, 0 unknown, 0 partial
 processing: maybe_changed_since (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 9290..9682)
@@ -129,34 +127,24 @@ In maybe_changed_since: 42 exprs, 0 unknown, 0 partial
 processing: for_each_query (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 9682..9841)
 In for_each_query: 13 exprs, 0 unknown, 0 partial
 processing: file_text (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 3621..3817)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &dyn SourceDatabaseExt, got &DB
 In file_text: 5 exprs, 0 unknown, 0 partial
 processing: set_file_text (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 3817..4051)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_file_text: 6 exprs, 0 unknown, 0 partial
 processing: set_file_text_with_durability (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 4051..4407)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_file_text_with_durability: 7 exprs, 0 unknown, 0 partial
 processing: file_source_root (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 4407..4618)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &dyn SourceDatabaseExt, got &DB
 In file_source_root: 5 exprs, 0 unknown, 0 partial
 processing: set_file_source_root (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 4618..4867)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_file_source_root: 6 exprs, 0 unknown, 0 partial
 processing: set_file_source_root_with_durability (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 4867..5236)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_file_source_root_with_durability: 7 exprs, 0 unknown, 0 partial
 processing: source_root (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 5236..5456)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &dyn SourceDatabaseExt, got &DB
 In source_root: 5 exprs, 0 unknown, 0 partial
 processing: set_source_root (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 5456..5714)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_source_root: 6 exprs, 0 unknown, 0 partial
 processing: set_source_root_with_durability (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 5714..6094)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &mut dyn SourceDatabaseExt, got &mut DB
 In set_source_root_with_durability: 7 exprs, 0 unknown, 0 partial
 processing: source_root_crates (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 6094..6345)
-/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Expected &dyn SourceDatabaseExt, got &DB
 In source_root_crates: 5 exprs, 0 unknown, 0 partial
 processing: in_db (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 6411..6833)
 In in_db: 4 exprs, 0 unknown, 0 partial
@@ -185,7 +173,11 @@ In query_storage: 4 exprs, 0 unknown, 0 partial
 processing: execute (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 18077..18222)
 In execute: 5 exprs, 0 unknown, 0 partial
 processing: new (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 18615..19027)
-In new: 22 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 79:0-94:1: Unknown type
+In new: 22 exprs, 4 unknown, 12 partial
 processing: fmt_index (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 19064..19631)
 In fmt_index: 64 exprs, 0 unknown, 0 partial
 processing: maybe_changed_since (/home/dawer/source/rust-analyzer/crates/base_db/src/lib.rs 19631..20242)
@@ -767,40 +759,28 @@ In db::map_id_down: 10 exprs, 0 unknown, 0 partial
 processing: db::map_id_up (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 2894..3354)
 In db::map_id_up: 12 exprs, 0 unknown, 0 partial
 processing: db::ast_id_map (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 2481..2682)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::ast_id_map: 5 exprs, 0 unknown, 0 partial
 processing: db::parse_or_expand (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 2682..2769)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::parse_or_expand: 5 exprs, 0 unknown, 0 partial
 processing: db::parse_macro_expansion (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 2769..3090)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::parse_macro_expansion: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_macro (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 3090..3298)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::intern_macro: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_macro (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 3298..3523)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::lookup_intern_macro: 5 exprs, 0 unknown, 0 partial
 processing: db::macro_arg (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 3523..3623)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::macro_arg: 5 exprs, 0 unknown, 0 partial
 processing: db::macro_arg_text (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 3623..3844)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::macro_arg_text: 5 exprs, 0 unknown, 0 partial
 processing: db::macro_def (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 3844..4074)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::macro_def: 5 exprs, 0 unknown, 0 partial
 processing: db::macro_expand (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 4074..4338)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::macro_expand: 5 exprs, 0 unknown, 0 partial
 processing: db::expand_proc_macro (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 4338..4603)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::expand_proc_macro: 5 exprs, 0 unknown, 0 partial
 processing: db::macro_expand_error (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 4603..4836)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::macro_expand_error: 5 exprs, 0 unknown, 0 partial
 processing: db::hygiene_frame (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 4836..5052)
-/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Expected &dyn AstDatabase, got &DB
 In db::hygiene_frame: 5 exprs, 0 unknown, 0 partial
 processing: db::in_db (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 5118..5534)
 In db::in_db: 4 exprs, 0 unknown, 0 partial
@@ -879,7 +859,17 @@ In db::query_storage: 4 exprs, 0 unknown, 0 partial
 processing: db::execute (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 35619..35759)
 In db::execute: 5 exprs, 0 unknown, 0 partial
 processing: db::new (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 36630..37565)
-In db::new: 52 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 91:0-136:1: Unknown type
+In db::new: 52 exprs, 10 unknown, 30 partial
 processing: db::fmt_index (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 37596..38698)
 In db::fmt_index: 130 exprs, 0 unknown, 0 partial
 processing: db::maybe_changed_since (/home/dawer/source/rust-analyzer/crates/hir_expand/src/db.rs 38698..39928)
@@ -1040,7 +1030,6 @@ In from_single_file: 66 exprs, 0 unknown, 0 partial
 processing: status (/home/dawer/source/rust-analyzer/crates/ide/src/lib.rs 7105..7298)
 In status: 10 exprs, 0 unknown, 0 partial
 processing: prime_caches (/home/dawer/source/rust-analyzer/crates/ide/src/lib.rs 7304..7517)
-/home/dawer/source/rust-analyzer/crates/ide/src/lib.rs 242:62-242:65: Expected &(dyn Fn(PrimeCachesProgress) + Sync), got &F
 In prime_caches: 9 exprs, 0 unknown, 0 partial
 processing: file_text (/home/dawer/source/rust-analyzer/crates/ide/src/lib.rs 7523..7690)
 In file_text: 7 exprs, 0 unknown, 0 partial
@@ -2290,7 +2279,9 @@ In rename::tests::macros_are_broken_lol: 10 exprs, 0 unknown, 0 partial
 processing: prime_caches::prime_caches (/home/dawer/source/rust-analyzer/crates/ide/src/prime_caches.rs 642..1656)
 In prime_caches::prime_caches: 43 exprs, 0 unknown, 0 partial
 processing: file_structure::file_structure (/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 1064..2274)
-In file_structure::file_structure: 75 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 49:36-49:48: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 49:36-49:57: Expected Option<usize>, got Copied<{unknown}>
+In file_structure::file_structure: 75 exprs, 1 unknown, 1 partial
 processing: file_structure::structure_node (/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 2276..6783)
 In file_structure::structure_node: 280 exprs, 0 unknown, 0 partial
 processing: file_structure::structure_token (/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 6785..7432)
@@ -2300,7 +2291,8 @@ In file_structure::tests::check: 14 exprs, 0 unknown, 0 partial
 processing: file_structure::tests::test_file_structure (/home/dawer/source/rust-analyzer/crates/ide/src/file_structure.rs 7732..19705)
 In file_structure::tests::test_file_structure: 10 exprs, 0 unknown, 0 partial
 processing: goto_type_definition::goto_type_definition (/home/dawer/source/rust-analyzer/crates/ide/src/goto_type_definition.rs 218..2952)
-In goto_type_definition::goto_type_definition: 212 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide/src/goto_type_definition.rs 60:16-60:34: Unknown type
+In goto_type_definition::goto_type_definition: 212 exprs, 1 unknown, 1 partial
 processing: goto_type_definition::tests::check (/home/dawer/source/rust-analyzer/crates/ide/src/goto_type_definition.rs 3075..3837)
 In goto_type_definition::tests::check: 91 exprs, 0 unknown, 0 partial
 processing: goto_type_definition::tests::goto_type_definition_works_simple (/home/dawer/source/rust-analyzer/crates/ide/src/goto_type_definition.rs 3843..4003)
@@ -2380,11 +2372,11 @@ In runnables::runnable_fn: 97 exprs, 0 unknown, 0 partial
 processing: runnables::runnable_mod (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 11084..11619)
 In runnables::runnable_mod: 44 exprs, 0 unknown, 0 partial
 processing: runnables::runnable_impl (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 11621..12369)
-In runnables::runnable_impl: 98 exprs, 0 unknown, 0 partial
+In runnables::runnable_impl: 98 exprs, 0 unknown, 1 partial
 processing: runnables::runnable_mod_outline_definition (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 12371..13135)
 In runnables::runnable_mod_outline_definition: 49 exprs, 0 unknown, 0 partial
 processing: runnables::module_def_doctest (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 13137..15493)
-In runnables::module_def_doctest: 219 exprs, 0 unknown, 0 partial
+In runnables::module_def_doctest: 219 exprs, 0 unknown, 1 partial
 processing: runnables::has_runnable_doc_test (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 16028..16640)
 In runnables::has_runnable_doc_test: 41 exprs, 0 unknown, 0 partial
 processing: runnables::has_test_function_or_multiple_test_submodules (/home/dawer/source/rust-analyzer/crates/ide/src/runnables.rs 16642..17613)
@@ -2470,7 +2462,8 @@ processing: inlay_hints::get_param_name_hints (/home/dawer/source/rust-analyzer/
 /home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 172:19-172:29: Unknown type
 In inlay_hints::get_param_name_hints: 68 exprs, 2 unknown, 3 partial
 processing: inlay_hints::get_bind_pat_hints (/home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 5641..6517)
-In inlay_hints::get_bind_pat_hints: 74 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 192:31-192:49: Unknown type
+In inlay_hints::get_bind_pat_hints: 74 exprs, 1 unknown, 1 partial
 processing: inlay_hints::hint_iterator (/home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 6519..8348)
 In inlay_hints::hint_iterator: 139 exprs, 0 unknown, 0 partial
 processing: inlay_hints::pat_is_enum_variant (/home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 8350..8768)
@@ -3164,7 +3157,6 @@ In group_storage: 6 exprs, 0 unknown, 0 partial
 processing: group_storage (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 9960..10110)
 In group_storage: 6 exprs, 0 unknown, 0 partial
 processing: line_index (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 545..749)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 119:0-122:1: Expected &dyn LineIndexDatabase, got &DB
 In line_index: 5 exprs, 0 unknown, 0 partial
 processing: in_db (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 817..1240)
 In in_db: 4 exprs, 0 unknown, 0 partial
@@ -3175,7 +3167,8 @@ In query_storage: 4 exprs, 0 unknown, 0 partial
 processing: execute (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 3690..3827)
 In execute: 5 exprs, 0 unknown, 0 partial
 processing: new (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 3978..4127)
-In new: 7 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 119:0-122:1: Unknown type
+In new: 7 exprs, 1 unknown, 3 partial
 processing: fmt_index (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 4164..4462)
 In fmt_index: 31 exprs, 0 unknown, 0 partial
 processing: maybe_changed_since (/home/dawer/source/rust-analyzer/crates/ide_db/src/lib.rs 4462..4762)
@@ -3388,7 +3381,7 @@ processing: helpers::insert_use::insert_use_ (/home/dawer/source/rust-analyzer/c
 /home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/insert_use.rs 324:53-324:57: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/insert_use.rs 332:42-332:46: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/insert_use.rs 333:41-333:45: Unknown type
-In helpers::insert_use::insert_use_: 310 exprs, 10 unknown, 27 partial
+In helpers::insert_use::insert_use_: 310 exprs, 10 unknown, 28 partial
 processing: helpers::insert_use::is_inner_attribute (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/insert_use.rs 15345..15476)
 In helpers::insert_use::is_inner_attribute: 12 exprs, 0 unknown, 0 partial
 processing: helpers::insert_use::is_inner_comment (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/insert_use.rs 15478..15644)
@@ -3566,7 +3559,11 @@ In helpers::import_assets::find_import_for_segment: 31 exprs, 0 unknown, 0 parti
 processing: helpers::import_assets::module_with_segment_name (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 14821..15529)
 In helpers::import_assets::module_with_segment_name: 45 exprs, 0 unknown, 0 partial
 processing: helpers::import_assets::trait_applicable_items (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 15531..18595)
-In helpers::import_assets::trait_applicable_items: 161 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 457:17-457:40: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 443:27-460:14: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 468:13-468:29: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 494:13-494:29: Unknown type
+In helpers::import_assets::trait_applicable_items: 161 exprs, 4 unknown, 11 partial
 processing: helpers::import_assets::assoc_to_item (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 18597..18879)
 In helpers::import_assets::assoc_to_item: 18 exprs, 0 unknown, 0 partial
 processing: helpers::import_assets::get_mod_path (/home/dawer/source/rust-analyzer/crates/ide_db/src/helpers/import_assets.rs 18881..19256)
@@ -3746,7 +3743,9 @@ In call_info::tests::call_info_for_fn_ptr: 10 exprs, 0 unknown, 0 partial
 processing: call_info::tests::call_info_for_unclosed_call (/home/dawer/source/rust-analyzer/crates/ide_db/src/call_info/tests.rs 9775..10249)
 In call_info::tests::call_info_for_unclosed_call: 19 exprs, 0 unknown, 0 partial
 processing: symbol_index::library_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 3251..3946)
-In symbol_index::library_symbols: 44 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 112:14-125:18: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 126:13-126:16: Unknown type
+In symbol_index::library_symbols: 44 exprs, 2 unknown, 2 partial
 processing: symbol_index::file_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 3948..4239)
 In symbol_index::file_symbols: 17 exprs, 0 unknown, 0 partial
 processing: symbol_index::world_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 4484..6357)
@@ -3756,7 +3755,9 @@ In symbol_index::crate_symbols: 80 exprs, 0 unknown, 0 partial
 processing: symbol_index::index_resolve (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 7212..7404)
 In symbol_index::index_resolve: 14 exprs, 0 unknown, 0 partial
 processing: symbol_index::source_file_to_file_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 12466..13195)
-In symbol_index::source_file_to_file_symbols: 46 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 411:44-411:56: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 411:44-411:65: Expected Option<SmolStr>, got Cloned<{unknown}>
+In symbol_index::source_file_to_file_symbols: 46 exprs, 1 unknown, 1 partial
 processing: symbol_index::to_symbol (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 13197..14066)
 In symbol_index::to_symbol: 96 exprs, 0 unknown, 0 partial
 processing: symbol_index::to_file_symbol (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 14068..14968)
@@ -3798,28 +3799,20 @@ In symbol_index::search: 107 exprs, 0 unknown, 0 partial
 processing: symbol_index::is_type (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 12170..12462)
 In symbol_index::is_type: 6 exprs, 0 unknown, 0 partial
 processing: symbol_index::file_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 2770..2980)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &dyn SymbolsDatabase, got &DB
 In symbol_index::file_symbols: 5 exprs, 0 unknown, 0 partial
 processing: symbol_index::library_symbols (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 2980..3216)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &dyn SymbolsDatabase, got &DB
 In symbol_index::library_symbols: 4 exprs, 0 unknown, 0 partial
 processing: symbol_index::local_roots (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 3216..3420)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &dyn SymbolsDatabase, got &DB
 In symbol_index::local_roots: 4 exprs, 0 unknown, 0 partial
 processing: symbol_index::set_local_roots (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 3420..3659)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &mut dyn SymbolsDatabase, got &mut DB
 In symbol_index::set_local_roots: 5 exprs, 0 unknown, 0 partial
 processing: symbol_index::set_local_roots_with_durability (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 3659..4020)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &mut dyn SymbolsDatabase, got &mut DB
 In symbol_index::set_local_roots_with_durability: 6 exprs, 0 unknown, 0 partial
 processing: symbol_index::library_roots (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 4020..4228)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &dyn SymbolsDatabase, got &DB
 In symbol_index::library_roots: 4 exprs, 0 unknown, 0 partial
 processing: symbol_index::set_library_roots (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 4228..4471)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &mut dyn SymbolsDatabase, got &mut DB
 In symbol_index::set_library_roots: 5 exprs, 0 unknown, 0 partial
 processing: symbol_index::set_library_roots_with_durability (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 4471..4836)
-/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Expected &mut dyn SymbolsDatabase, got &mut DB
 In symbol_index::set_library_roots_with_durability: 6 exprs, 0 unknown, 0 partial
 processing: symbol_index::in_db (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 4908..5331)
 In symbol_index::in_db: 4 exprs, 0 unknown, 0 partial
@@ -3850,7 +3843,11 @@ In symbol_index::in_db_mut: 4 exprs, 0 unknown, 0 partial
 processing: symbol_index::query_storage (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 16720..16870)
 In symbol_index::query_storage: 4 exprs, 0 unknown, 0 partial
 processing: symbol_index::new (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 17255..17662)
-In symbol_index::new: 22 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 94:0-106:1: Unknown type
+In symbol_index::new: 22 exprs, 4 unknown, 12 partial
 processing: symbol_index::fmt_index (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 17697..18259)
 In symbol_index::fmt_index: 64 exprs, 0 unknown, 0 partial
 processing: symbol_index::maybe_changed_since (/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 18259..18865)
@@ -3866,7 +3863,7 @@ In path_transform::build_ctx: 75 exprs, 0 unknown, 0 partial
 processing: path_transform::apply (/home/dawer/source/rust-analyzer/crates/ide_db/src/path_transform.rs 3086..3471)
 In path_transform::apply: 20 exprs, 0 unknown, 0 partial
 processing: path_transform::transform_path (/home/dawer/source/rust-analyzer/crates/ide_db/src/path_transform.rs 3476..5321)
-In path_transform::transform_path: 103 exprs, 0 unknown, 0 partial
+In path_transform::transform_path: 103 exprs, 0 unknown, 1 partial
 processing: items_locator::items_with_name (/home/dawer/source/rust-analyzer/crates/ide_db/src/items_locator.rs 1104..3387)
 In items_locator::items_with_name: 125 exprs, 0 unknown, 0 partial
 processing: items_locator::find_items (/home/dawer/source/rust-analyzer/crates/ide_db/src/items_locator.rs 3389..4829)
@@ -4526,7 +4523,8 @@ In parser::bump_any: 14 exprs, 0 unknown, 0 partial
 processing: parser::bump_remap (/home/dawer/source/rust-analyzer/crates/parser/src/parser.rs 5936..6443)
 In parser::bump_remap: 13 exprs, 0 unknown, 0 partial
 processing: parser::error (/home/dawer/source/rust-analyzer/crates/parser/src/parser.rs 6449..6787)
-In parser::error: 11 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/parser/src/parser.rs 202:38-202:52: Unknown type
+In parser::error: 11 exprs, 1 unknown, 2 partial
 processing: parser::expect (/home/dawer/source/rust-analyzer/crates/parser/src/parser.rs 6793..7070)
 In parser::expect: 26 exprs, 0 unknown, 0 partial
 processing: parser::err_and_bump (/home/dawer/source/rust-analyzer/crates/parser/src/parser.rs 7076..7527)
@@ -4690,7 +4688,7 @@ In loader::includes_path: 45 exprs, 0 unknown, 0 partial
 processing: loader::fmt (/home/dawer/source/rust-analyzer/crates/vfs/src/loader.rs 6023..6547)
 In loader::fmt: 26 exprs, 0 unknown, 0 partial
 processing: as_assoc_item (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 60250..60674)
-In as_assoc_item: 15 exprs, 0 unknown, 0 partial
+In as_assoc_item: 15 exprs, 0 unknown, 1 partial
 processing: dependencies (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 4956..5324)
 In dependencies: 20 exprs, 0 unknown, 0 partial
 processing: reverse_dependencies (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 5330..5684)
@@ -4732,25 +4730,25 @@ In attrs: 31 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 12552..13158)
 In visibility: 29 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 13180..13601)
-In name: 35 exprs, 0 unknown, 0 partial
+In name: 35 exprs, 0 unknown, 1 partial
 processing: krate (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 13607..13730)
 In krate: 5 exprs, 0 unknown, 0 partial
 processing: crate_root (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 13736..14137)
 In crate_root: 11 exprs, 0 unknown, 0 partial
 processing: children (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 14143..14553)
-In children: 23 exprs, 0 unknown, 0 partial
+In children: 23 exprs, 0 unknown, 1 partial
 processing: parent (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 14559..14920)
-In parent: 19 exprs, 0 unknown, 0 partial
+In parent: 19 exprs, 0 unknown, 1 partial
 processing: path_to_root (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 14926..15182)
 In path_to_root: 22 exprs, 0 unknown, 0 partial
 processing: scope (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 15188..16160)
-In scope: 62 exprs, 0 unknown, 0 partial
+In scope: 62 exprs, 0 unknown, 2 partial
 processing: diagnostics (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 16166..24457)
-In diagnostics: 400 exprs, 0 unknown, 0 partial
+In diagnostics: 400 exprs, 0 unknown, 13 partial
 processing: declarations (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 24463..24674)
-In declarations: 16 exprs, 0 unknown, 0 partial
+In declarations: 16 exprs, 0 unknown, 1 partial
 processing: impl_defs (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 24680..24871)
-In impl_defs: 16 exprs, 0 unknown, 0 partial
+In impl_defs: 16 exprs, 0 unknown, 1 partial
 processing: find_use_path (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 24877..25165)
 /home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 660:42-660:53: Unknown type
 In find_use_path: 9 exprs, 1 unknown, 0 partial
@@ -4758,7 +4756,7 @@ processing: find_use_path_prefixed (/home/dawer/source/rust-analyzer/crates/hir/
 /home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 671:51-671:62: Unknown type
 In find_use_path_prefixed: 10 exprs, 1 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 25654..25855)
-In visibility: 14 exprs, 0 unknown, 0 partial
+In visibility: 14 exprs, 0 unknown, 1 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 26130..26254)
 In name: 11 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 26260..27002)
@@ -4766,15 +4764,15 @@ In ty: 44 exprs, 0 unknown, 0 partial
 processing: parent_def (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 27008..27097)
 In parent_def: 3 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 27136..27464)
-In visibility: 24 exprs, 0 unknown, 0 partial
+In visibility: 24 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 27589..27709)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 27715..27815)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: fields (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 27821..28069)
 In fields: 15 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28075..28211)
-In ty: 13 exprs, 0 unknown, 0 partial
+In ty: 13 exprs, 0 unknown, 1 partial
 processing: repr (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28217..28329)
 In repr: 7 exprs, 0 unknown, 0 partial
 processing: kind (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28335..28433)
@@ -4782,29 +4780,29 @@ In kind: 5 exprs, 0 unknown, 0 partial
 processing: variant_data (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28439..28563)
 In variant_data: 7 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28603..28763)
-In visibility: 15 exprs, 0 unknown, 0 partial
+In visibility: 15 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28885..28984)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 28990..29110)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 29116..29252)
-In ty: 13 exprs, 0 unknown, 0 partial
+In ty: 13 exprs, 0 unknown, 1 partial
 processing: fields (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 29258..29505)
 In fields: 15 exprs, 0 unknown, 0 partial
 processing: variant_data (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 29511..29634)
 In variant_data: 7 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 29673..29832)
-In visibility: 15 exprs, 0 unknown, 0 partial
+In visibility: 15 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 29951..30071)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30077..30175)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: variants (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30181..30348)
 In variants: 13 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30354..30490)
-In ty: 13 exprs, 0 unknown, 0 partial
+In ty: 13 exprs, 0 unknown, 1 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30528..30686)
-In visibility: 15 exprs, 0 unknown, 0 partial
+In visibility: 15 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30852..30942)
 In module: 5 exprs, 0 unknown, 0 partial
 processing: parent_enum (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 30948..31031)
@@ -4822,7 +4820,7 @@ In visibility: 6 exprs, 0 unknown, 0 partial
 processing: has_non_default_type_params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 32056..32250)
 In has_non_default_type_params: 12 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 32256..32636)
-In ty: 13 exprs, 0 unknown, 0 partial
+In ty: 13 exprs, 0 unknown, 1 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 32642..32861)
 In module: 12 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 32867..33076)
@@ -4842,15 +4840,15 @@ In module: 12 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 35116..35367)
 In name: 14 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 35498..35620)
-In module: 10 exprs, 0 unknown, 0 partial
+In module: 10 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 35626..35728)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: ret_type (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 35734..36204)
-In ret_type: 37 exprs, 0 unknown, 0 partial
+In ret_type: 37 exprs, 0 unknown, 3 partial
 processing: self_param (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 36210..36418)
 In self_param: 16 exprs, 0 unknown, 0 partial
 processing: assoc_fn_params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 36424..37081)
-In assoc_fn_params: 48 exprs, 0 unknown, 0 partial
+In assoc_fn_params: 48 exprs, 0 unknown, 3 partial
 processing: method_params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 37087..37332)
 In method_params: 18 exprs, 0 unknown, 0 partial
 processing: is_unsafe (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 37338..37444)
@@ -4880,7 +4878,7 @@ processing: diagnostics (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs
 /home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 1235:33-1235:43: Unknown type
 /home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 1235:33-1235:49: Unknown type
 /home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 1235:59-1235:63: Unknown type
-In diagnostics: 352 exprs, 22 unknown, 24 partial
+In diagnostics: 352 exprs, 22 unknown, 25 partial
 processing: has_body (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 47151..47399)
 In has_body: 6 exprs, 0 unknown, 0 partial
 processing: debug_hir (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 47405..47852)
@@ -4902,27 +4900,27 @@ In display: 8 exprs, 0 unknown, 0 partial
 processing: source (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 50164..50471)
 In source: 19 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 50513..50756)
-In visibility: 18 exprs, 0 unknown, 0 partial
+In visibility: 18 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 50878..51008)
-In module: 10 exprs, 0 unknown, 0 partial
+In module: 10 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 51014..51121)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 51127..51525)
-In ty: 36 exprs, 0 unknown, 0 partial
+In ty: 36 exprs, 0 unknown, 2 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 51564..51804)
-In visibility: 18 exprs, 0 unknown, 0 partial
+In visibility: 18 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 51929..52059)
-In module: 10 exprs, 0 unknown, 0 partial
+In module: 10 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 52065..52173)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: is_mut (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 52179..52276)
 In is_mut: 6 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 52282..52676)
-In ty: 34 exprs, 0 unknown, 0 partial
+In ty: 34 exprs, 0 unknown, 2 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 52716..52876)
-In visibility: 15 exprs, 0 unknown, 0 partial
+In visibility: 15 exprs, 0 unknown, 2 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 52998..53118)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 53124..53223)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: items (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 53229..53381)
@@ -4932,21 +4930,21 @@ In is_auto: 6 exprs, 0 unknown, 0 partial
 processing: is_unsafe (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 53490..53592)
 In is_unsafe: 6 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 53631..53790)
-In visibility: 15 exprs, 0 unknown, 0 partial
+In visibility: 15 exprs, 0 unknown, 2 partial
 processing: has_non_default_type_params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 53924..54121)
 In has_non_default_type_params: 13 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 54127..54257)
-In module: 10 exprs, 0 unknown, 0 partial
+In module: 10 exprs, 0 unknown, 2 partial
 processing: type_ref (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 54263..54398)
 In type_ref: 8 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 54404..54550)
-In ty: 15 exprs, 0 unknown, 0 partial
+In ty: 15 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 54556..54660)
 In name: 7 exprs, 0 unknown, 0 partial
 processing: visibility (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 54703..54948)
-In visibility: 18 exprs, 0 unknown, 0 partial
+In visibility: 18 exprs, 0 unknown, 2 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 55112..55369)
-In ty: 17 exprs, 0 unknown, 0 partial
+In ty: 17 exprs, 0 unknown, 1 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 55375..55437)
 In name: 4 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 55911..56384)
@@ -4980,7 +4978,7 @@ In name: 16 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 60962..61206)
 In module: 12 exprs, 0 unknown, 0 partial
 processing: container (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 61211..61833)
-In container: 36 exprs, 0 unknown, 0 partial
+In container: 36 exprs, 0 unknown, 3 partial
 processing: containing_trait (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 61839..62036)
 In containing_trait: 9 exprs, 0 unknown, 0 partial
 processing: containing_trait_impl (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 62042..62248)
@@ -5010,9 +5008,9 @@ In parent: 4 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 66313..66407)
 In module: 6 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 66413..66668)
-In ty: 22 exprs, 0 unknown, 0 partial
+In ty: 22 exprs, 0 unknown, 1 partial
 processing: source (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 66674..67100)
-In source: 33 exprs, 0 unknown, 0 partial
+In source: 33 exprs, 0 unknown, 1 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 67266..67360)
 In module: 6 exprs, 0 unknown, 0 partial
 processing: parent (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 67366..67458)
@@ -5020,7 +5018,7 @@ In parent: 4 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 67464..67601)
 In name: 11 exprs, 0 unknown, 0 partial
 processing: source (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 67607..67899)
-In source: 20 exprs, 0 unknown, 0 partial
+In source: 20 exprs, 0 unknown, 1 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 68160..68429)
 In module: 12 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 68435..68694)
@@ -5028,27 +5026,27 @@ In name: 12 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 68828..69021)
 In name: 16 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 69027..69136)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 69142..69481)
-In ty: 31 exprs, 0 unknown, 0 partial
+In ty: 31 exprs, 0 unknown, 2 partial
 processing: trait_bounds (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 69487..69912)
 In trait_bounds: 22 exprs, 0 unknown, 1 partial
 processing: default (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 69918..70490)
-In default: 55 exprs, 0 unknown, 0 partial
+In default: 55 exprs, 0 unknown, 2 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 70636..70803)
 In name: 14 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 70809..70918)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: parent (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 70924..71018)
 In parent: 5 exprs, 0 unknown, 0 partial
 processing: name (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 71155..71319)
 In name: 14 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 71325..71434)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: parent (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 71440..71534)
 In parent: 5 exprs, 0 unknown, 0 partial
 processing: ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 71540..71742)
-In ty: 18 exprs, 0 unknown, 0 partial
+In ty: 18 exprs, 0 unknown, 1 partial
 processing: all_in_crate (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 71861..72136)
 In all_in_crate: 17 exprs, 0 unknown, 0 partial
 processing: all_for_type (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 72142..73624)
@@ -5058,21 +5056,21 @@ In all_for_trait: 25 exprs, 0 unknown, 0 partial
 processing: trait_ (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 74021..74385)
 In trait_: 16 exprs, 0 unknown, 0 partial
 processing: self_ty (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 74391..74797)
-In self_ty: 34 exprs, 0 unknown, 0 partial
+In self_ty: 34 exprs, 0 unknown, 2 partial
 processing: items (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 74803..74945)
 In items: 13 exprs, 0 unknown, 0 partial
 processing: is_negative (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 74951..75055)
 In is_negative: 6 exprs, 0 unknown, 0 partial
 processing: module (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 75061..75173)
-In module: 8 exprs, 0 unknown, 0 partial
+In module: 8 exprs, 0 unknown, 1 partial
 processing: is_builtin_derive (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 75179..75899)
-In is_builtin_derive: 53 exprs, 0 unknown, 0 partial
+In is_builtin_derive: 53 exprs, 0 unknown, 3 partial
 processing: new_with_resolver (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 76043..76288)
 In new_with_resolver: 12 exprs, 0 unknown, 0 partial
 processing: new_with_resolver_inner (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 76293..76659)
 In new_with_resolver_inner: 18 exprs, 0 unknown, 0 partial
 processing: new (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 76665..77029)
-In new: 22 exprs, 0 unknown, 0 partial
+In new: 22 exprs, 0 unknown, 1 partial
 processing: from_def (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 77035..77288)
 In from_def: 14 exprs, 0 unknown, 0 partial
 processing: is_unit (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 77294..77395)
@@ -5134,7 +5132,7 @@ In as_builtin: 8 exprs, 0 unknown, 0 partial
 processing: as_dyn_trait (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 89012..89107)
 In as_dyn_trait: 6 exprs, 0 unknown, 0 partial
 processing: applicable_inherent_traits (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 89113..89672)
-In applicable_inherent_traits: 21 exprs, 0 unknown, 0 partial
+In applicable_inherent_traits: 21 exprs, 0 unknown, 1 partial
 processing: as_impl_traits (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 89678..90144)
 In as_impl_traits: 24 exprs, 0 unknown, 1 partial
 processing: as_associated_type_parent_trait (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 90150..90307)
@@ -5148,11 +5146,11 @@ In could_unify_with: 19 exprs, 0 unknown, 0 partial
 processing: kind (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 94780..95170)
 In kind: 17 exprs, 0 unknown, 0 partial
 processing: receiver_param (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 95175..95561)
-In receiver_param: 22 exprs, 0 unknown, 0 partial
+In receiver_param: 22 exprs, 0 unknown, 2 partial
 processing: n_params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 95566..95680)
 In n_params: 13 exprs, 0 unknown, 0 partial
 processing: params (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 95685..96702)
-In params: 72 exprs, 0 unknown, 0 partial
+In params: 72 exprs, 0 unknown, 2 partial
 processing: return_type (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 96707..96796)
 In return_type: 8 exprs, 0 unknown, 0 partial
 processing: all_items (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 97075..98152)
@@ -5164,7 +5162,7 @@ In krate: 43 exprs, 0 unknown, 0 partial
 processing: from (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 99267..99539)
 In from: 15 exprs, 0 unknown, 0 partial
 processing: krate (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 99989..100091)
-In krate: 7 exprs, 0 unknown, 0 partial
+In krate: 7 exprs, 0 unknown, 1 partial
 processing: krate (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 100129..100215)
 In krate: 5 exprs, 0 unknown, 0 partial
 processing: krate (/home/dawer/source/rust-analyzer/crates/hir/src/lib.rs 100249..100350)
@@ -5314,7 +5312,7 @@ In display::hir_fmt: 78 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir/src/display.rs 15043..15568)
 In display::hir_fmt: 61 exprs, 0 unknown, 0 partial
 processing: attrs::resolve_doc_path (/home/dawer/source/rust-analyzer/crates/hir/src/attrs.rs 3861..5900)
-In attrs::resolve_doc_path: 123 exprs, 0 unknown, 0 partial
+In attrs::resolve_doc_path: 123 exprs, 0 unknown, 14 partial
 processing: attrs::attrs (/home/dawer/source/rust-analyzer/crates/hir/src/attrs.rs 21..124)
 In attrs::attrs: 8 exprs, 0 unknown, 0 partial
 processing: attrs::docs (/home/dawer/source/rust-analyzer/crates/hir/src/attrs.rs 124..240)
@@ -5444,7 +5442,6 @@ In semantics::adjusted: 6 exprs, 0 unknown, 0 partial
 processing: semantics::fmt (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 4122..4227)
 In semantics::fmt: 10 exprs, 0 unknown, 0 partial
 processing: semantics::new (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 4283..4408)
-/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 134:39-134:41: Expected &dyn HirDatabase, got &DB
 In semantics::new: 7 exprs, 0 unknown, 0 partial
 processing: semantics::parse (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 4414..4509)
 In semantics::parse: 5 exprs, 0 unknown, 0 partial
@@ -5541,19 +5538,19 @@ In semantics::expand_attr_macro: 33 exprs, 0 unknown, 0 partial
 processing: semantics::is_attr_macro_call (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 12491..12723)
 In semantics::is_attr_macro_call: 18 exprs, 0 unknown, 0 partial
 processing: semantics::speculative_expand (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 12729..13444)
-In semantics::speculative_expand: 39 exprs, 0 unknown, 0 partial
+In semantics::speculative_expand: 39 exprs, 0 unknown, 3 partial
 processing: semantics::descend_into_macros (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 13450..16804)
-In semantics::descend_into_macros: 187 exprs, 0 unknown, 0 partial
+In semantics::descend_into_macros: 187 exprs, 0 unknown, 2 partial
 processing: semantics::descend_node_at_offset (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 16810..17173)
 In semantics::descend_node_at_offset: 15 exprs, 0 unknown, 0 partial
 processing: semantics::original_range (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 17179..17352)
-In semantics::original_range: 11 exprs, 0 unknown, 0 partial
+In semantics::original_range: 11 exprs, 0 unknown, 1 partial
 processing: semantics::diagnostics_display_range (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 17358..17660)
-In semantics::diagnostics_display_range: 25 exprs, 0 unknown, 0 partial
+In semantics::diagnostics_display_range: 25 exprs, 0 unknown, 1 partial
 processing: semantics::token_ancestors_with_macros (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 17666..17889)
 In semantics::token_ancestors_with_macros: 9 exprs, 0 unknown, 0 partial
 processing: semantics::ancestors_with_macros (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 17895..18106)
-In semantics::ancestors_with_macros: 13 exprs, 0 unknown, 0 partial
+In semantics::ancestors_with_macros: 13 exprs, 0 unknown, 1 partial
 processing: semantics::ancestors_at_offset_with_macros (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 18112..18464)
 In semantics::ancestors_at_offset_with_macros: 18 exprs, 0 unknown, 0 partial
 processing: semantics::resolve_lifetime_param (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 18470..19658)
@@ -5561,7 +5558,7 @@ In semantics::resolve_lifetime_param: 124 exprs, 0 unknown, 0 partial
 processing: semantics::resolve_label (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 19664..20502)
 In semantics::resolve_label: 74 exprs, 0 unknown, 0 partial
 processing: semantics::resolve_type (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 20508..20891)
-In semantics::resolve_type: 35 exprs, 0 unknown, 0 partial
+In semantics::resolve_type: 35 exprs, 0 unknown, 1 partial
 processing: semantics::type_of_expr (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 20897..21121)
 In semantics::type_of_expr: 14 exprs, 0 unknown, 0 partial
 processing: semantics::type_of_pat (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 21127..21345)
@@ -5601,13 +5598,13 @@ In semantics::scope: 11 exprs, 0 unknown, 0 partial
 processing: semantics::scope_at_offset (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 24912..25145)
 In semantics::scope_at_offset: 12 exprs, 0 unknown, 0 partial
 processing: semantics::scope_for_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 25151..25405)
-In semantics::scope_for_def: 19 exprs, 0 unknown, 0 partial
+In semantics::scope_for_def: 19 exprs, 0 unknown, 1 partial
 processing: semantics::analyze (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 25411..25511)
 In semantics::analyze: 5 exprs, 0 unknown, 0 partial
 processing: semantics::analyze_with_offset (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 25516..25654)
 In semantics::analyze_with_offset: 7 exprs, 0 unknown, 0 partial
 processing: semantics::analyze_impl (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 25659..26884)
-In semantics::analyze_impl: 74 exprs, 0 unknown, 0 partial
+In semantics::analyze_impl: 74 exprs, 0 unknown, 7 partial
 processing: semantics::cache (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 26890..27160)
 In semantics::cache: 29 exprs, 0 unknown, 1 partial
 processing: semantics::assert_contains_node (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 27166..27261)
@@ -5669,17 +5666,17 @@ In semantics::module: 8 exprs, 0 unknown, 0 partial
 processing: semantics::krate (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 34713..34808)
 In semantics::krate: 8 exprs, 0 unknown, 0 partial
 processing: semantics::traits_in_scope (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 34814..35113)
-In semantics::traits_in_scope: 9 exprs, 0 unknown, 0 partial
+In semantics::traits_in_scope: 9 exprs, 0 unknown, 1 partial
 processing: semantics::process_all_names (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 35119..36430)
-In semantics::process_all_names: 61 exprs, 0 unknown, 0 partial
+In semantics::process_all_names: 61 exprs, 0 unknown, 1 partial
 processing: semantics::speculative_resolve (/home/dawer/source/rust-analyzer/crates/hir/src/semantics.rs 36436..36849)
-In semantics::speculative_resolve: 24 exprs, 0 unknown, 0 partial
+In semantics::speculative_resolve: 24 exprs, 0 unknown, 1 partial
 processing: semantics::source_to_def::file_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 5433..5992)
 In semantics::source_to_def::file_to_def: 28 exprs, 0 unknown, 0 partial
 processing: semantics::source_to_def::module_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 5998..7036)
-In semantics::source_to_def::module_to_def: 75 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::module_to_def: 75 exprs, 0 unknown, 3 partial
 processing: semantics::source_to_def::source_file_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 7042..7314)
-In semantics::source_to_def::source_file_to_def: 16 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::source_file_to_def: 16 exprs, 0 unknown, 1 partial
 processing: semantics::source_to_def::trait_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 7320..7447)
 In semantics::source_to_def::trait_to_def: 5 exprs, 0 unknown, 0 partial
 processing: semantics::source_to_def::impl_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 7452..7575)
@@ -5738,17 +5735,17 @@ processing: semantics::source_to_def::const_param_to_def (/home/dawer/source/rus
 /home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 278:30-285:5: Expected Option<ConstParamId>, got Copied<{unknown}>
 In semantics::source_to_def::const_param_to_def: 31 exprs, 1 unknown, 2 partial
 processing: semantics::source_to_def::macro_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 12366..12892)
-In semantics::source_to_def::macro_to_def: 39 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::macro_to_def: 39 exprs, 0 unknown, 1 partial
 processing: semantics::source_to_def::find_container (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 12898..13333)
-In semantics::source_to_def::find_container: 37 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::find_container: 37 exprs, 0 unknown, 2 partial
 processing: semantics::source_to_def::container_to_def (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 13339..15492)
 In semantics::source_to_def::container_to_def: 196 exprs, 0 unknown, 0 partial
 processing: semantics::source_to_def::find_generic_param_container (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 15498..16445)
-In semantics::source_to_def::find_generic_param_container: 103 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::find_generic_param_container: 103 exprs, 0 unknown, 1 partial
 processing: semantics::source_to_def::find_pat_or_label_container (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 16451..17121)
-In semantics::source_to_def::find_pat_or_label_container: 61 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::find_pat_or_label_container: 61 exprs, 0 unknown, 1 partial
 processing: semantics::source_to_def::child_by_source (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 17758..18429)
-In semantics::source_to_def::child_by_source: 28 exprs, 0 unknown, 0 partial
+In semantics::source_to_def::child_by_source: 28 exprs, 0 unknown, 8 partial
 processing: semantics::source_to_def::from (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 41..116)
 In semantics::source_to_def::from: 4 exprs, 0 unknown, 0 partial
 processing: semantics::source_to_def::from (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 153..218)
@@ -5766,45 +5763,45 @@ In semantics::source_to_def::from: 4 exprs, 0 unknown, 0 partial
 processing: semantics::source_to_def::from (/home/dawer/source/rust-analyzer/crates/hir/src/semantics/source_to_def.rs 766..839)
 In semantics::source_to_def::from: 4 exprs, 0 unknown, 0 partial
 processing: has_source::definition_source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 720..1017)
-In has_source::definition_source: 14 exprs, 0 unknown, 0 partial
+In has_source::definition_source: 14 exprs, 0 unknown, 2 partial
 processing: has_source::is_mod_rs (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 1023..1281)
-In has_source::is_mod_rs: 15 exprs, 0 unknown, 0 partial
+In has_source::is_mod_rs: 15 exprs, 0 unknown, 1 partial
 processing: has_source::declaration_source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 1287..1622)
-In has_source::declaration_source: 14 exprs, 0 unknown, 0 partial
+In has_source::declaration_source: 14 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 1685..2074)
-In has_source::source: 27 exprs, 0 unknown, 0 partial
+In has_source::source: 27 exprs, 0 unknown, 1 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 2137..2273)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 2334..2470)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 2529..2665)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 2730..2894)
-In has_source::source: 16 exprs, 0 unknown, 0 partial
+In has_source::source: 16 exprs, 0 unknown, 1 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 2955..3091)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 3152..3288)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 3351..3487)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 3548..3684)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 3753..3889)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 3970..4236)
-In has_source::source: 25 exprs, 0 unknown, 0 partial
+In has_source::source: 25 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 4295..4431)
-In has_source::source: 11 exprs, 0 unknown, 0 partial
+In has_source::source: 11 exprs, 0 unknown, 2 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 4521..4730)
-In has_source::source: 18 exprs, 0 unknown, 0 partial
+In has_source::source: 18 exprs, 0 unknown, 1 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 4808..5017)
-In has_source::source: 18 exprs, 0 unknown, 0 partial
+In has_source::source: 18 exprs, 0 unknown, 1 partial
 processing: has_source::source (/home/dawer/source/rust-analyzer/crates/hir/src/has_source.rs 5089..5298)
-In has_source::source: 18 exprs, 0 unknown, 0 partial
+In has_source::source: 18 exprs, 0 unknown, 1 partial
 processing: source_analyzer::scope_for (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 15675..15998)
 In source_analyzer::scope_for: 21 exprs, 0 unknown, 0 partial
 processing: source_analyzer::scope_for_offset (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 16000..16998)
-In source_analyzer::scope_for_offset: 69 exprs, 0 unknown, 0 partial
+In source_analyzer::scope_for_offset: 69 exprs, 0 unknown, 1 partial
 processing: source_analyzer::adjust (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 17000..18285)
 /home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 493:16-493:18: Unknown type
 /home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 493:16-493:26: Unknown type
@@ -5815,15 +5812,15 @@ processing: source_analyzer::adjust (/home/dawer/source/rust-analyzer/crates/hir
 /home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 488:15-488:17: Unknown type
 /home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 488:33-488:35: Unknown type
 /home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 496:30-496:35: Unknown type
-In source_analyzer::adjust: 81 exprs, 9 unknown, 4 partial
+In source_analyzer::adjust: 81 exprs, 9 unknown, 5 partial
 processing: source_analyzer::resolve_hir_path (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 18287..18477)
 In source_analyzer::resolve_hir_path: 7 exprs, 0 unknown, 0 partial
 processing: source_analyzer::resolve_hir_path_ (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 18479..21860)
-In source_analyzer::resolve_hir_path_: 217 exprs, 0 unknown, 0 partial
+In source_analyzer::resolve_hir_path_: 217 exprs, 0 unknown, 4 partial
 processing: source_analyzer::resolve_hir_path_qualifier (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 21862..23198)
-In source_analyzer::resolve_hir_path_qualifier: 68 exprs, 0 unknown, 0 partial
+In source_analyzer::resolve_hir_path_qualifier: 68 exprs, 0 unknown, 2 partial
 processing: source_analyzer::new_for_body (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 1712..2516)
-In source_analyzer::new_for_body: 50 exprs, 0 unknown, 0 partial
+In source_analyzer::new_for_body: 50 exprs, 0 unknown, 1 partial
 processing: source_analyzer::new_for_resolver (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 2522..2850)
 In source_analyzer::new_for_resolver: 9 exprs, 0 unknown, 0 partial
 processing: source_analyzer::expr_id (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 2856..3260)
@@ -5839,29 +5836,39 @@ In source_analyzer::type_of_pat: 45 exprs, 0 unknown, 0 partial
 processing: source_analyzer::type_of_self (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 5180..5566)
 In source_analyzer::type_of_self: 26 exprs, 0 unknown, 0 partial
 processing: source_analyzer::resolve_method_call (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 5572..5858)
-In source_analyzer::resolve_method_call: 15 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 167:40-167:59: Unknown type
+In source_analyzer::resolve_method_call: 15 exprs, 1 unknown, 1 partial
 processing: source_analyzer::resolve_field (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 5864..6139)
-In source_analyzer::resolve_field: 19 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 176:40-176:60: Unknown type
+In source_analyzer::resolve_field: 19 exprs, 1 unknown, 1 partial
 processing: source_analyzer::resolve_record_field (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 6145..7622)
-In source_analyzer::resolve_record_field: 117 exprs, 0 unknown, 0 partial
+In source_analyzer::resolve_record_field: 117 exprs, 0 unknown, 2 partial
 processing: source_analyzer::resolve_record_pat_field (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 7628..8252)
-In source_analyzer::resolve_record_pat_field: 44 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 217:34-217:51: Unknown type
+In source_analyzer::resolve_record_pat_field: 44 exprs, 1 unknown, 2 partial
 processing: source_analyzer::resolve_macro_call (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 8258..8668)
-In source_analyzer::resolve_macro_call: 29 exprs, 0 unknown, 0 partial
+In source_analyzer::resolve_macro_call: 29 exprs, 0 unknown, 2 partial
 processing: source_analyzer::resolve_bind_pat_to_const (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 8674..9205)
-In source_analyzer::resolve_bind_pat_to_const: 34 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 239:34-239:52: Unknown type
+In source_analyzer::resolve_bind_pat_to_const: 34 exprs, 1 unknown, 1 partial
 processing: source_analyzer::resolve_path (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 9211..12958)
-In source_analyzer::resolve_path: 280 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 260:44-260:60: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 274:38-274:53: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 286:44-286:58: Unknown type
+In source_analyzer::resolve_path: 280 exprs, 3 unknown, 5 partial
 processing: source_analyzer::record_literal_missing_fields (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 12964..13622)
-In source_analyzer::record_literal_missing_fields: 48 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 347:40-347:62: Unknown type
+In source_analyzer::record_literal_missing_fields: 48 exprs, 1 unknown, 1 partial
 processing: source_analyzer::record_pattern_missing_fields (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 13628..14275)
-In source_analyzer::record_pattern_missing_fields: 47 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 365:34-365:56: Unknown type
+In source_analyzer::record_pattern_missing_fields: 47 exprs, 1 unknown, 1 partial
 processing: source_analyzer::missing_fields (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 14281..14920)
 In source_analyzer::missing_fields: 32 exprs, 0 unknown, 0 partial
 processing: source_analyzer::expand (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 14926..15364)
-In source_analyzer::expand: 32 exprs, 0 unknown, 0 partial
+In source_analyzer::expand: 32 exprs, 0 unknown, 3 partial
 processing: source_analyzer::resolve_variant (/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 15370..15671)
-In source_analyzer::resolve_variant: 15 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir/src/source_analyzer.rs 412:40-412:57: Unknown type
+In source_analyzer::resolve_variant: 15 exprs, 1 unknown, 1 partial
 processing: db::hir_database_is_object_safe (/home/dawer/source/rust-analyzer/crates/hir/src/db.rs 499..594)
 In db::hir_database_is_object_safe: 1 exprs, 0 unknown, 0 partial
 processing: from_id::from (/home/dawer/source/rust-analyzer/crates/hir/src/from_id.rs 42..101)
@@ -5991,7 +5998,7 @@ In process::run: 17 exprs, 0 unknown, 1 partial
 processing: process::find_proc_macros (/home/dawer/source/rust-analyzer/crates/proc_macro_api/src/process.rs 1019..1351)
 In process::find_proc_macros: 14 exprs, 0 unknown, 0 partial
 processing: process::send_task (/home/dawer/source/rust-analyzer/crates/proc_macro_api/src/process.rs 1357..2587)
-In process::send_task: 113 exprs, 0 unknown, 0 partial
+In process::send_task: 113 exprs, 0 unknown, 2 partial
 processing: process::run (/home/dawer/source/rust-analyzer/crates/proc_macro_api/src/process.rs 2668..2971)
 /home/dawer/source/rust-analyzer/crates/proc_macro_api/src/process.rs 90:59-90:60: Unknown type
 In process::run: 22 exprs, 1 unknown, 4 partial
@@ -6107,7 +6114,9 @@ In ted::append_child: 8 exprs, 0 unknown, 0 partial
 processing: ted::append_child_raw (/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 4380..4550)
 In ted::append_child_raw: 8 exprs, 0 unknown, 0 partial
 processing: ted::ws_before (/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 4552..5515)
-In ted::ws_before: 112 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 158:56-158:89: Unknown type
+/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 166:56-166:90: Unknown type
+In ted::ws_before: 112 exprs, 2 unknown, 2 partial
 processing: ted::ws_after (/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 5516..5818)
 In ted::ws_after: 16 exprs, 0 unknown, 0 partial
 processing: ted::ws_between (/home/dawer/source/rust-analyzer/crates/syntax/src/ted.rs 5819..6708)
@@ -6215,12 +6224,10 @@ In algo::has_errors: 9 exprs, 0 unknown, 0 partial
 processing: algo::diff (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 4744..9639)
 In algo::diff: 35 exprs, 0 unknown, 0 partial
 processing: algo::insert_children (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 9641..10151)
-/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 264:39-264:53: Expected &mut (dyn Iterator<Item = NodeOrToken<SyntaxNode<RustLanguage>, SyntaxToken<RustLanguage>>>), got &mut <impl IntoIterator<Item = NodeOrToken<SyntaxNode<RustLanguage>, SyntaxToken<RustLanguage>>> as IntoIterator>::IntoIter
 In algo::insert_children: 9 exprs, 0 unknown, 0 partial
 processing: algo::_insert_children (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 10153..11437)
 In algo::_insert_children: 72 exprs, 0 unknown, 0 partial
 processing: algo::replace_children (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 11439..11923)
-/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 308:41-308:55: Expected &mut (dyn Iterator<Item = NodeOrToken<SyntaxNode<RustLanguage>, SyntaxToken<RustLanguage>>>), got &mut <impl IntoIterator<Item = NodeOrToken<SyntaxNode<RustLanguage>, SyntaxToken<RustLanguage>>> as IntoIterator>::IntoIter
 In algo::replace_children: 9 exprs, 0 unknown, 0 partial
 processing: algo::_replace_children (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 11925..12776)
 In algo::_replace_children: 53 exprs, 0 unknown, 0 partial
@@ -6259,7 +6266,7 @@ In algo::tests::merge_use: 11 exprs, 0 unknown, 0 partial
 processing: algo::tests::early_return_assist (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 19534..20649)
 In algo::tests::early_return_assist: 11 exprs, 0 unknown, 0 partial
 processing: algo::tests::check_diff (/home/dawer/source/rust-analyzer/crates/syntax/src/algo.rs 20655..22702)
-In algo::tests::check_diff: 270 exprs, 0 unknown, 0 partial
+In algo::tests::check_diff: 270 exprs, 0 unknown, 8 partial
 processing: parsing::parse_text (/home/dawer/source/rust-analyzer/crates/syntax/src/parsing.rs 423..847)
 In parsing::parse_text: 28 exprs, 0 unknown, 0 partial
 processing: parsing::parse_text_fragment (/home/dawer/source/rust-analyzer/crates/syntax/src/parsing.rs 849..1889)
@@ -6295,6 +6302,7 @@ In parsing::text_token_source::bump: 26 exprs, 0 unknown, 0 partial
 processing: parsing::text_token_source::is_keyword (/home/dawer/source/rust-analyzer/crates/syntax/src/parsing/text_token_source.rs 1166..1392)
 In parsing::text_token_source::is_keyword: 23 exprs, 0 unknown, 0 partial
 processing: parsing::text_token_source::new (/home/dawer/source/rust-analyzer/crates/syntax/src/parsing/text_token_source.rs 1918..2584)
+/home/dawer/source/rust-analyzer/crates/syntax/src/parsing/text_token_source.rs 81:32-81:51: Expected &[(Token, TextSize)], got &Vec<(Token, TextSize), Global>
 In parsing::text_token_source::new: 39 exprs, 0 unknown, 0 partial
 processing: parsing::reparsing::incremental_reparse (/home/dawer/source/rust-analyzer/crates/syntax/src/parsing/reparsing.rs 711..1236)
 In parsing::reparsing::incremental_reparse: 40 exprs, 0 unknown, 0 partial
@@ -9556,7 +9564,7 @@ In syntax_error::fmt: 5 exprs, 0 unknown, 0 partial
 processing: subst_prefix (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 3973..4205)
 In subst_prefix: 20 exprs, 0 unknown, 1 partial
 processing: param_idx (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 4207..4416)
-In param_idx: 9 exprs, 0 unknown, 0 partial
+In param_idx: 9 exprs, 0 unknown, 1 partial
 processing: wrap_empty_binders (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 4418..4641)
 In wrap_empty_binders: 10 exprs, 0 unknown, 0 partial
 processing: make_only_type_binders (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 4643..5005)
@@ -9572,7 +9580,6 @@ In fold_free_vars: 10 exprs, 0 unknown, 0 partial
 processing: fold_tys (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 9516..10354)
 In fold_tys: 10 exprs, 0 unknown, 0 partial
 processing: replace_errors_with_variables (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 10356..14448)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 447:42-447:61: Expected &mut dyn Folder<Interner>, got &mut ErrorReplacer
 In replace_errors_with_variables: 47 exprs, 0 unknown, 9 partial
 processing: from_params_and_return (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lib.rs 5879..6074)
 In from_params_and_return: 8 exprs, 0 unknown, 0 partial
@@ -9591,57 +9598,57 @@ In lower::count_impl_traits: 17 exprs, 0 unknown, 0 partial
 processing: lower::callable_item_sig (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 38740..39149)
 In lower::callable_item_sig: 15 exprs, 0 unknown, 0 partial
 processing: lower::associated_type_shorthand_candidates (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 39151..41418)
-In lower::associated_type_shorthand_candidates: 112 exprs, 0 unknown, 0 partial
+In lower::associated_type_shorthand_candidates: 112 exprs, 0 unknown, 1 partial
 processing: lower::field_types_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 41420..42370)
-In lower::field_types_query: 64 exprs, 0 unknown, 0 partial
+In lower::field_types_query: 64 exprs, 0 unknown, 5 partial
 processing: lower::generic_predicates_for_param_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 42372..43995)
-In lower::generic_predicates_for_param_query: 55 exprs, 0 unknown, 0 partial
+In lower::generic_predicates_for_param_query: 55 exprs, 0 unknown, 2 partial
 processing: lower::generic_predicates_for_param_recover (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 43997..44191)
 In lower::generic_predicates_for_param_recover: 4 exprs, 0 unknown, 0 partial
 processing: lower::trait_environment_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 44193..46482)
-In lower::trait_environment_query: 128 exprs, 0 unknown, 0 partial
+In lower::trait_environment_query: 128 exprs, 0 unknown, 5 partial
 processing: lower::generic_predicates_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 46484..47055)
-In lower::generic_predicates_query: 33 exprs, 0 unknown, 0 partial
+In lower::generic_predicates_query: 33 exprs, 0 unknown, 2 partial
 processing: lower::generic_defaults_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 47057..48328)
-In lower::generic_defaults_query: 70 exprs, 0 unknown, 0 partial
+In lower::generic_defaults_query: 70 exprs, 0 unknown, 2 partial
 processing: lower::generic_defaults_recover (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 48330..48820)
-In lower::generic_defaults_recover: 23 exprs, 0 unknown, 0 partial
+In lower::generic_defaults_recover: 23 exprs, 0 unknown, 1 partial
 processing: lower::fn_sig_for_fn (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 48822..49635)
-In lower::fn_sig_for_fn: 56 exprs, 0 unknown, 0 partial
+In lower::fn_sig_for_fn: 56 exprs, 0 unknown, 2 partial
 processing: lower::type_for_fn (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 49637..50068)
-In lower::type_for_fn: 25 exprs, 0 unknown, 0 partial
+In lower::type_for_fn: 25 exprs, 0 unknown, 1 partial
 processing: lower::type_for_const (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 50070..50491)
-In lower::type_for_const: 30 exprs, 0 unknown, 0 partial
+In lower::type_for_const: 30 exprs, 0 unknown, 2 partial
 processing: lower::type_for_static (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 50493..50804)
-In lower::type_for_static: 22 exprs, 0 unknown, 0 partial
+In lower::type_for_static: 22 exprs, 0 unknown, 1 partial
 processing: lower::fn_sig_for_struct_constructor (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 50806..51419)
-In lower::fn_sig_for_struct_constructor: 42 exprs, 0 unknown, 0 partial
+In lower::fn_sig_for_struct_constructor: 42 exprs, 0 unknown, 1 partial
 processing: lower::type_for_struct_constructor (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 51421..51974)
-In lower::type_for_struct_constructor: 40 exprs, 0 unknown, 0 partial
+In lower::type_for_struct_constructor: 40 exprs, 0 unknown, 1 partial
 processing: lower::fn_sig_for_enum_variant_constructor (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 51976..52668)
-In lower::fn_sig_for_enum_variant_constructor: 51 exprs, 0 unknown, 0 partial
+In lower::fn_sig_for_enum_variant_constructor: 51 exprs, 0 unknown, 1 partial
 processing: lower::type_for_enum_variant_constructor (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 52670..53313)
-In lower::type_for_enum_variant_constructor: 49 exprs, 0 unknown, 0 partial
+In lower::type_for_enum_variant_constructor: 49 exprs, 0 unknown, 1 partial
 processing: lower::type_for_adt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 53315..53580)
-In lower::type_for_adt: 21 exprs, 0 unknown, 0 partial
+In lower::type_for_adt: 21 exprs, 0 unknown, 1 partial
 processing: lower::type_for_type_alias (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 53582..54207)
-In lower::type_for_type_alias: 54 exprs, 0 unknown, 0 partial
+In lower::type_for_type_alias: 54 exprs, 0 unknown, 2 partial
 processing: lower::ty_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 55677..56226)
 In lower::ty_query: 18 exprs, 0 unknown, 0 partial
 processing: lower::ty_recover (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 56228..56686)
-In lower::ty_recover: 34 exprs, 0 unknown, 0 partial
+In lower::ty_recover: 34 exprs, 0 unknown, 2 partial
 processing: lower::value_ty_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 56688..57210)
 In lower::value_ty_query: 28 exprs, 0 unknown, 0 partial
 processing: lower::impl_self_ty_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 57212..57630)
-In lower::impl_self_ty_query: 30 exprs, 0 unknown, 0 partial
+In lower::impl_self_ty_query: 30 exprs, 0 unknown, 2 partial
 processing: lower::const_param_ty_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 57632..57954)
-In lower::const_param_ty_query: 26 exprs, 0 unknown, 0 partial
+In lower::const_param_ty_query: 26 exprs, 0 unknown, 1 partial
 processing: lower::impl_self_ty_recover (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 57956..58205)
-In lower::impl_self_ty_recover: 16 exprs, 0 unknown, 0 partial
+In lower::impl_self_ty_recover: 16 exprs, 0 unknown, 1 partial
 processing: lower::impl_trait_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 58207..58745)
-In lower::impl_trait_query: 35 exprs, 0 unknown, 0 partial
+In lower::impl_trait_query: 35 exprs, 0 unknown, 1 partial
 processing: lower::return_type_impl_traits (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 58747..59621)
-In lower::return_type_impl_traits: 49 exprs, 0 unknown, 0 partial
+In lower::return_type_impl_traits: 49 exprs, 0 unknown, 2 partial
 processing: lower::lower_to_chalk_mutability (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 59623..59863)
 In lower::lower_to_chalk_mutability: 5 exprs, 0 unknown, 0 partial
 processing: lower::make_binders (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 59865..60023)
@@ -9659,25 +9666,25 @@ In lower::with_type_param_mode: 4 exprs, 0 unknown, 0 partial
 processing: lower::lower_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 6193..6287)
 In lower::lower_ty: 5 exprs, 0 unknown, 0 partial
 processing: lower::lower_ty_ext (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 6293..16192)
-In lower::lower_ty_ext: 487 exprs, 0 unknown, 3 partial
+In lower::lower_ty_ext: 487 exprs, 0 unknown, 11 partial
 processing: lower::lower_ty_only_param (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 16198..17131)
-In lower::lower_ty_only_param: 42 exprs, 0 unknown, 0 partial
+In lower::lower_ty_only_param: 42 exprs, 0 unknown, 1 partial
 processing: lower::lower_ty_relative_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 17137..17822)
 In lower::lower_ty_relative_path: 32 exprs, 0 unknown, 0 partial
 processing: lower::lower_partly_resolved_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 17828..22884)
-In lower::lower_partly_resolved_path: 233 exprs, 0 unknown, 1 partial
+In lower::lower_partly_resolved_path: 233 exprs, 0 unknown, 4 partial
 processing: lower::lower_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 22890..23899)
-In lower::lower_path: 60 exprs, 0 unknown, 0 partial
+In lower::lower_path: 60 exprs, 0 unknown, 1 partial
 processing: lower::select_associated_type (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 23905..26032)
-In lower::select_associated_type: 79 exprs, 0 unknown, 0 partial
+In lower::select_associated_type: 79 exprs, 0 unknown, 1 partial
 processing: lower::lower_path_inner (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 26038..26539)
 In lower::lower_path_inner: 27 exprs, 0 unknown, 0 partial
 processing: lower::substs_from_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 26545..28395)
 In lower::substs_from_path: 72 exprs, 0 unknown, 0 partial
 processing: lower::substs_from_path_segment (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 28401..31614)
-In lower::substs_from_path_segment: 227 exprs, 0 unknown, 2 partial
+In lower::substs_from_path_segment: 227 exprs, 0 unknown, 3 partial
 processing: lower::lower_trait_ref_from_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 31620..32157)
-In lower::lower_trait_ref_from_path: 26 exprs, 0 unknown, 0 partial
+In lower::lower_trait_ref_from_path: 26 exprs, 0 unknown, 1 partial
 processing: lower::lower_trait_ref_from_resolved_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 32163..32524)
 In lower::lower_trait_ref_from_resolved_path: 11 exprs, 0 unknown, 0 partial
 processing: lower::lower_trait_ref (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 32530..32743)
@@ -9685,7 +9692,7 @@ In lower::lower_trait_ref: 7 exprs, 0 unknown, 0 partial
 processing: lower::trait_ref_substs_from_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 32749..33018)
 In lower::trait_ref_substs_from_path: 10 exprs, 0 unknown, 0 partial
 processing: lower::lower_where_predicate (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 33024..34768)
-In lower::lower_where_predicate: 62 exprs, 0 unknown, 0 partial
+In lower::lower_where_predicate: 62 exprs, 0 unknown, 1 partial
 processing: lower::lower_type_bound (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 34774..35906)
 In lower::lower_type_bound: 51 exprs, 0 unknown, 0 partial
 processing: lower::assoc_type_bindings_from_type_bound (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 35912..38001)
@@ -9693,7 +9700,7 @@ In lower::assoc_type_bindings_from_type_bound: 99 exprs, 0 unknown, 0 partial
 processing: lower::lower_impl_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 38007..38515)
 In lower::lower_impl_trait: 34 exprs, 0 unknown, 0 partial
 processing: lower::krate (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 54466..54816)
-In lower::krate: 20 exprs, 0 unknown, 0 partial
+In lower::krate: 20 exprs, 0 unknown, 5 partial
 processing: lower::from (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 54868..55112)
 In lower::from: 9 exprs, 0 unknown, 0 partial
 processing: lower::from (/home/dawer/source/rust-analyzer/crates/hir_ty/src/lower.rs 37..104)
@@ -9731,11 +9738,11 @@ In display::fn_traits: 10 exprs, 0 unknown, 0 partial
 processing: display::write_bounds_like_dyn_trait_with_prefix (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 28391..28733)
 In display::write_bounds_like_dyn_trait_with_prefix: 37 exprs, 0 unknown, 0 partial
 processing: display::write_bounds_like_dyn_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 28735..32145)
-In display::write_bounds_like_dyn_trait: 254 exprs, 0 unknown, 0 partial
+In display::write_bounds_like_dyn_trait: 254 exprs, 0 unknown, 1 partial
 processing: display::fmt_trait_ref (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 32147..32727)
 In display::fmt_trait_ref: 110 exprs, 0 unknown, 0 partial
 processing: display::write_visibility (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 35372..36145)
-In display::write_visibility: 73 exprs, 0 unknown, 0 partial
+In display::write_visibility: 73 exprs, 0 unknown, 2 partial
 processing: display::write_joined (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 4491..4868)
 In display::write_joined: 33 exprs, 0 unknown, 0 partial
 processing: display::write_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 4874..5345)
@@ -9763,11 +9770,11 @@ In display::hir_fmt: 27 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 9137..9444)
 In display::hir_fmt: 13 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 9480..10127)
-In display::hir_fmt: 66 exprs, 0 unknown, 0 partial
+In display::hir_fmt: 66 exprs, 0 unknown, 1 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 10166..10307)
 In display::hir_fmt: 23 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 10340..27662)
-In display::hir_fmt: 1309 exprs, 0 unknown, 0 partial
+In display::hir_fmt: 1309 exprs, 0 unknown, 5 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 27704..28212)
 In display::hir_fmt: 76 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 32764..32880)
@@ -9779,11 +9786,11 @@ In display::hir_fmt: 19 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 34115..34228)
 In display::hir_fmt: 5 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 34271..35013)
-In display::hir_fmt: 67 exprs, 0 unknown, 0 partial
+In display::hir_fmt: 67 exprs, 0 unknown, 1 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 35054..35368)
 In display::hir_fmt: 38 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 36181..39509)
-In display::hir_fmt: 364 exprs, 0 unknown, 0 partial
+In display::hir_fmt: 364 exprs, 0 unknown, 2 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 39549..40019)
 In display::hir_fmt: 49 exprs, 0 unknown, 0 partial
 processing: display::hir_fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/display.rs 40054..42526)
@@ -9909,127 +9916,86 @@ In db::trait_solve_wait: 8 exprs, 0 unknown, 0 partial
 processing: db::hir_database_is_object_safe (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 6872..6967)
 In db::hir_database_is_object_safe: 1 exprs, 0 unknown, 0 partial
 processing: db::infer (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 3585..3663)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::infer: 5 exprs, 0 unknown, 0 partial
 processing: db::infer_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 3663..3889)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::infer_query: 5 exprs, 0 unknown, 0 partial
 processing: db::ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 3889..4068)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::ty: 5 exprs, 0 unknown, 0 partial
 processing: db::value_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 4068..4268)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::value_ty: 5 exprs, 0 unknown, 0 partial
 processing: db::impl_self_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 4268..4463)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::impl_self_ty: 5 exprs, 0 unknown, 0 partial
 processing: db::const_param_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 4463..4656)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::const_param_ty: 5 exprs, 0 unknown, 0 partial
 processing: db::impl_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 4656..4878)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::impl_trait: 5 exprs, 0 unknown, 0 partial
 processing: db::field_types (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 4878..5138)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::field_types: 5 exprs, 0 unknown, 0 partial
 processing: db::callable_item_signature (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 5138..5365)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::callable_item_signature: 5 exprs, 0 unknown, 0 partial
 processing: db::return_type_impl_traits (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 5365..5655)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::return_type_impl_traits: 5 exprs, 0 unknown, 0 partial
 processing: db::generic_predicates_for_param (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 5655..5943)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::generic_predicates_for_param: 5 exprs, 0 unknown, 0 partial
 processing: db::generic_predicates (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 5943..6215)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::generic_predicates: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_environment (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 6215..6467)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_environment: 5 exprs, 0 unknown, 0 partial
 processing: db::generic_defaults (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 6467..6697)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::generic_defaults: 5 exprs, 0 unknown, 0 partial
 processing: db::inherent_impls_in_crate (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 6697..6929)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::inherent_impls_in_crate: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_impls_in_crate (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 6929..7149)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_impls_in_crate: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_impls_in_block (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 7149..7387)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_impls_in_block: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_impls_in_deps (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 7387..7605)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_impls_in_deps: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_callable_def (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 7605..7848)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_callable_def: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_callable_def (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 7848..8108)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_callable_def: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_type_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 8108..8344)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_type_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_type_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 8344..8597)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_type_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_lifetime_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 8597..8857)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_lifetime_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_lifetime_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 8857..9134)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_lifetime_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_const_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 9134..9376)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_const_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_const_param_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 9376..9635)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_const_param_id: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_impl_trait_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 9635..9869)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_impl_trait_id: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_impl_trait_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 9869..10120)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_impl_trait_id: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_closure (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 10120..10364)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::intern_closure: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_closure (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 10364..10625)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::lookup_intern_closure: 5 exprs, 0 unknown, 0 partial
 processing: db::associated_ty_data (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 10625..10904)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::associated_ty_data: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 10904..11184)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_datum: 6 exprs, 0 unknown, 0 partial
 processing: db::struct_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 11184..11464)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::struct_datum: 6 exprs, 0 unknown, 0 partial
 processing: db::impl_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 11464..11738)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::impl_datum: 6 exprs, 0 unknown, 0 partial
 processing: db::fn_def_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 11738..11999)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::fn_def_datum: 6 exprs, 0 unknown, 0 partial
 processing: db::fn_def_variance (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 11999..12218)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::fn_def_variance: 5 exprs, 0 unknown, 0 partial
 processing: db::adt_variance (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 12218..12448)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::adt_variance: 5 exprs, 0 unknown, 0 partial
 processing: db::associated_ty_value (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 12448..12781)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::associated_ty_value: 6 exprs, 0 unknown, 0 partial
 processing: db::trait_solve (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 12781..12931)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_solve: 6 exprs, 0 unknown, 0 partial
 processing: db::trait_solve_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 12931..13288)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::trait_solve_query: 6 exprs, 0 unknown, 0 partial
 processing: db::program_clauses_for_chalk_env (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 13288..13647)
-/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Expected &dyn HirDatabase, got &DB
 In db::program_clauses_for_chalk_env: 6 exprs, 0 unknown, 0 partial
 processing: db::in_db (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 13717..14135)
 In db::in_db: 4 exprs, 0 unknown, 0 partial
@@ -10328,7 +10294,46 @@ In db::query_storage: 4 exprs, 0 unknown, 0 partial
 processing: db::execute (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 135477..135661)
 In db::execute: 6 exprs, 0 unknown, 0 partial
 processing: db::new (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 139126..142741)
-In db::new: 197 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 21:0-156:1: Unknown type
+In db::new: 197 exprs, 39 unknown, 117 partial
 processing: db::fmt_index (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 142772..146641)
 In db::fmt_index: 449 exprs, 0 unknown, 0 partial
 processing: db::maybe_changed_since (/home/dawer/source/rust-analyzer/crates/hir_ty/src/db.rs 146641..151044)
@@ -10390,15 +10395,15 @@ In chalk_ext::dyn_trait: 30 exprs, 0 unknown, 0 partial
 processing: chalk_ext::strip_references (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 6684..6876)
 In chalk_ext::strip_references: 14 exprs, 0 unknown, 0 partial
 processing: chalk_ext::impl_trait_bounds (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 6882..11154)
-In chalk_ext::impl_trait_bounds: 193 exprs, 0 unknown, 0 partial
+In chalk_ext::impl_trait_bounds: 193 exprs, 0 unknown, 1 partial
 processing: chalk_ext::associated_type_parent_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 11160..11949)
-In chalk_ext::associated_type_parent_trait: 35 exprs, 0 unknown, 0 partial
+In chalk_ext::associated_type_parent_trait: 35 exprs, 0 unknown, 2 partial
 processing: chalk_ext::equals_ctor (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 11955..13543)
 In chalk_ext::equals_ctor: 52 exprs, 0 unknown, 0 partial
 processing: chalk_ext::trait_ref (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 13736..13937)
 In chalk_ext::trait_ref: 10 exprs, 0 unknown, 0 partial
 processing: chalk_ext::trait_ (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 13943..14210)
-In chalk_ext::trait_: 16 exprs, 0 unknown, 0 partial
+In chalk_ext::trait_: 16 exprs, 0 unknown, 1 partial
 processing: chalk_ext::hir_trait_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_ext.rs 14316..14400)
 In chalk_ext::hir_trait_id: 5 exprs, 0 unknown, 0 partial
 processing: builder::new (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 884..1026)
@@ -10424,13 +10429,13 @@ In builder::fn_ptr: 8 exprs, 0 unknown, 0 partial
 processing: builder::builtin (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 2564..3326)
 In builder::builtin: 52 exprs, 0 unknown, 0 partial
 processing: builder::type_params_subst (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 3332..3525)
-In builder::type_params_subst: 10 exprs, 0 unknown, 0 partial
+In builder::type_params_subst: 10 exprs, 0 unknown, 1 partial
 processing: builder::subst_for_def (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 3531..3787)
-In builder::subst_for_def: 14 exprs, 0 unknown, 0 partial
+In builder::subst_for_def: 14 exprs, 0 unknown, 1 partial
 processing: builder::build (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 3793..3898)
 In builder::build: 4 exprs, 0 unknown, 0 partial
 processing: builder::adt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 3939..4170)
-In builder::adt: 13 exprs, 0 unknown, 0 partial
+In builder::adt: 13 exprs, 0 unknown, 1 partial
 processing: builder::fill_with_defaults (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 4176..4898)
 In builder::fill_with_defaults: 49 exprs, 0 unknown, 1 partial
 processing: builder::build (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 4904..5043)
@@ -10440,11 +10445,11 @@ In builder::tuple: 7 exprs, 0 unknown, 0 partial
 processing: builder::build (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 5201..5344)
 In builder::build: 10 exprs, 0 unknown, 0 partial
 processing: builder::trait_ref (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 5378..5616)
-In builder::trait_ref: 13 exprs, 0 unknown, 0 partial
+In builder::trait_ref: 13 exprs, 0 unknown, 1 partial
 processing: builder::build (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 5622..5795)
 In builder::build: 8 exprs, 0 unknown, 0 partial
 processing: builder::assoc_type_projection (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 5833..6120)
-In builder::assoc_type_projection: 13 exprs, 0 unknown, 0 partial
+In builder::assoc_type_projection: 13 exprs, 0 unknown, 1 partial
 processing: builder::build (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 6126..6318)
 In builder::build: 8 exprs, 0 unknown, 0 partial
 processing: builder::subst_binders (/home/dawer/source/rust-analyzer/crates/hir_ty/src/builder.rs 6409..6547)
@@ -10518,9 +10523,9 @@ In diagnostics::fmt: 20 exprs, 0 unknown, 0 partial
 processing: diagnostics::fmt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics.rs 1441..2003)
 In diagnostics::fmt: 26 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::record_literal_missing_fields (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 15085..16041)
-In diagnostics::expr::record_literal_missing_fields: 61 exprs, 0 unknown, 0 partial
+In diagnostics::expr::record_literal_missing_fields: 61 exprs, 0 unknown, 1 partial
 processing: diagnostics::expr::record_pattern_missing_fields (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 16043..16981)
-In diagnostics::expr::record_pattern_missing_fields: 61 exprs, 0 unknown, 0 partial
+In diagnostics::expr::record_pattern_missing_fields: 61 exprs, 0 unknown, 1 partial
 processing: diagnostics::expr::types_of_subpatterns_do_match (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 16983..17546)
 In diagnostics::expr::types_of_subpatterns_do_match: 11 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::collect (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 1378..1712)
@@ -10530,15 +10535,15 @@ In diagnostics::expr::new: 6 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::validate_body (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 2037..3795)
 In diagnostics::expr::validate_body: 110 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::check_for_filter_map_next (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 3801..5855)
-In diagnostics::expr::check_for_filter_map_next: 111 exprs, 0 unknown, 0 partial
+In diagnostics::expr::check_for_filter_map_next: 111 exprs, 0 unknown, 2 partial
 processing: diagnostics::expr::validate_call (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 5861..8163)
 In diagnostics::expr::validate_call: 106 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::validate_match (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 8169..12358)
-In diagnostics::expr::validate_match: 163 exprs, 0 unknown, 0 partial
+In diagnostics::expr::validate_match: 163 exprs, 0 unknown, 2 partial
 processing: diagnostics::expr::lower_pattern (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 12364..12864)
 In diagnostics::expr::lower_pattern: 27 exprs, 0 unknown, 0 partial
 processing: diagnostics::expr::validate_results_in_tail_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 12870..14460)
-In diagnostics::expr::validate_results_in_tail_expr: 109 exprs, 0 unknown, 0 partial
+In diagnostics::expr::validate_results_in_tail_expr: 109 exprs, 0 unknown, 3 partial
 processing: diagnostics::expr::validate_missing_tail_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/expr.rs 14466..15081)
 In diagnostics::expr::validate_missing_tail_expr: 34 exprs, 0 unknown, 0 partial
 processing: diagnostics::decl_check::new (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 1563..1704)
@@ -10548,25 +10553,25 @@ In diagnostics::decl_check::validate_item: 16 exprs, 0 unknown, 0 partial
 processing: diagnostics::decl_check::validate_adt (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 2129..2469)
 In diagnostics::decl_check::validate_adt: 10 exprs, 0 unknown, 0 partial
 processing: diagnostics::decl_check::allowed (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 2475..4441)
-In diagnostics::decl_check::allowed: 110 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::allowed: 110 exprs, 0 unknown, 6 partial
 processing: diagnostics::decl_check::validate_func (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 4447..6801)
-In diagnostics::decl_check::validate_func: 110 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::validate_func: 110 exprs, 0 unknown, 1 partial
 processing: diagnostics::decl_check::create_incorrect_case_diagnostic_for_func (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 6807..8039)
-In diagnostics::decl_check::create_incorrect_case_diagnostic_for_func: 108 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::create_incorrect_case_diagnostic_for_func: 108 exprs, 0 unknown, 2 partial
 processing: diagnostics::decl_check::create_incorrect_case_diagnostic_for_variables (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 8045..10830)
-In diagnostics::decl_check::create_incorrect_case_diagnostic_for_variables: 99 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::create_incorrect_case_diagnostic_for_variables: 99 exprs, 0 unknown, 1 partial
 processing: diagnostics::decl_check::validate_struct (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 10836..12675)
 In diagnostics::decl_check::validate_struct: 78 exprs, 0 unknown, 0 partial
 processing: diagnostics::decl_check::create_incorrect_case_diagnostic_for_struct (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 12681..16211)
-In diagnostics::decl_check::create_incorrect_case_diagnostic_for_struct: 311 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::create_incorrect_case_diagnostic_for_struct: 311 exprs, 0 unknown, 2 partial
 processing: diagnostics::decl_check::validate_enum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 16217..17541)
 In diagnostics::decl_check::validate_enum: 55 exprs, 0 unknown, 0 partial
 processing: diagnostics::decl_check::create_incorrect_case_diagnostic_for_enum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 17547..21013)
-In diagnostics::decl_check::create_incorrect_case_diagnostic_for_enum: 311 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::create_incorrect_case_diagnostic_for_enum: 311 exprs, 0 unknown, 2 partial
 processing: diagnostics::decl_check::validate_const (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 21019..22370)
-In diagnostics::decl_check::validate_const: 70 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::validate_const: 70 exprs, 0 unknown, 2 partial
 processing: diagnostics::decl_check::validate_static (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check.rs 22376..23871)
-In diagnostics::decl_check::validate_static: 78 exprs, 0 unknown, 0 partial
+In diagnostics::decl_check::validate_static: 78 exprs, 0 unknown, 2 partial
 processing: diagnostics::decl_check::case_conv::to_camel_case (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check/case_conv.rs 252..2128)
 /home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/decl_check/case_conv.rs 54:13-54:54: Expected String, got <String as Add<&String>>::Output
 In diagnostics::decl_check::case_conv::to_camel_case: 111 exprs, 0 unknown, 0 partial
@@ -10597,7 +10602,7 @@ In diagnostics::unsafe_check::missing_unsafe: 34 exprs, 0 unknown, 0 partial
 processing: diagnostics::unsafe_check::unsafe_expressions (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/unsafe_check.rs 940..1230)
 In diagnostics::unsafe_check::unsafe_expressions: 20 exprs, 0 unknown, 0 partial
 processing: diagnostics::unsafe_check::walk_unsafe (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/unsafe_check.rs 1232..3115)
-In diagnostics::unsafe_check::walk_unsafe: 118 exprs, 0 unknown, 0 partial
+In diagnostics::unsafe_check::walk_unsafe: 118 exprs, 0 unknown, 2 partial
 processing: diagnostics::match_check::wildcard_from_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 982..1086)
 In diagnostics::match_check::wildcard_from_ty: 6 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::new (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 2229..2384)
@@ -10605,7 +10610,7 @@ In diagnostics::match_check::new: 7 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::lower_pattern (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 2390..3217)
 In diagnostics::match_check::lower_pattern: 30 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::lower_pattern_unadjusted (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 3223..6172)
-In diagnostics::match_check::lower_pattern_unadjusted: 155 exprs, 0 unknown, 0 partial
+In diagnostics::match_check::lower_pattern_unadjusted: 155 exprs, 0 unknown, 2 partial
 processing: diagnostics::match_check::lower_tuple_subpats (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 6178..6776)
 In diagnostics::match_check::lower_tuple_subpats: 31 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::lower_patterns (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check.rs 6782..6923)
@@ -10657,7 +10662,7 @@ In diagnostics::match_check::usefulness::compute_match_usefulness: 94 exprs, 0 u
 processing: diagnostics::match_check::usefulness::is_uninhabited (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/usefulness.rs 14456..14724)
 In diagnostics::match_check::usefulness::is_uninhabited: 2 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::usefulness::is_foreign_non_exhaustive_enum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/usefulness.rs 14730..15204)
-In diagnostics::match_check::usefulness::is_foreign_non_exhaustive_enum: 25 exprs, 0 unknown, 0 partial
+In diagnostics::match_check::usefulness::is_foreign_non_exhaustive_enum: 25 exprs, 0 unknown, 1 partial
 processing: diagnostics::match_check::usefulness::feature_exhaustive_patterns (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/usefulness.rs 15210..15450)
 In diagnostics::match_check::usefulness::feature_exhaustive_patterns: 2 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::usefulness::alloc_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/usefulness.rs 15456..15564)
@@ -10804,7 +10809,7 @@ In diagnostics::match_check::deconstruct_pat::from_single_pattern: 28 exprs, 0 u
 processing: diagnostics::match_check::deconstruct_pat::wildcards_from_tys (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs 27058..27344)
 In diagnostics::match_check::deconstruct_pat::wildcards_from_tys: 15 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::deconstruct_pat::wildcards (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs 27350..30525)
-In diagnostics::match_check::deconstruct_pat::wildcards: 178 exprs, 0 unknown, 0 partial
+In diagnostics::match_check::deconstruct_pat::wildcards: 178 exprs, 0 unknown, 1 partial
 processing: diagnostics::match_check::deconstruct_pat::apply (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs 30531..33907)
 In diagnostics::match_check::deconstruct_pat::apply: 122 exprs, 0 unknown, 0 partial
 processing: diagnostics::match_check::deconstruct_pat::len (/home/dawer/source/rust-analyzer/crates/hir_ty/src/diagnostics/match_check/deconstruct_pat.rs 33913..34153)
@@ -10834,7 +10839,7 @@ In primitive::uint_ty_from_builtin: 9 exprs, 0 unknown, 0 partial
 processing: primitive::float_ty_from_builtin (/home/dawer/source/rust-analyzer/crates/hir_ty/src/primitive.rs 1492..1665)
 In primitive::float_ty_from_builtin: 5 exprs, 0 unknown, 0 partial
 processing: method_resolution::def_crates (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 11827..14314)
-In method_resolution::def_crates: 223 exprs, 0 unknown, 0 partial
+In method_resolution::def_crates: 223 exprs, 0 unknown, 5 partial
 processing: method_resolution::lookup_method (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 14316..15032)
 In method_resolution::lookup_method: 23 exprs, 0 unknown, 0 partial
 processing: method_resolution::iterate_method_candidates (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 15515..16395)
@@ -10848,19 +10853,19 @@ In method_resolution::iterate_method_candidates_by_receiver: 52 exprs, 0 unknown
 processing: method_resolution::iterate_method_candidates_for_self_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 21949..22594)
 In method_resolution::iterate_method_candidates_for_self_ty: 27 exprs, 0 unknown, 0 partial
 processing: method_resolution::iterate_trait_method_candidates (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 22596..25445)
-In method_resolution::iterate_trait_method_candidates: 132 exprs, 0 unknown, 0 partial
+In method_resolution::iterate_trait_method_candidates: 132 exprs, 0 unknown, 2 partial
 processing: method_resolution::iterate_inherent_methods (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 25447..27184)
 In method_resolution::iterate_inherent_methods: 82 exprs, 0 unknown, 0 partial
 processing: method_resolution::resolve_indexing_op (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 27186..27802)
 In method_resolution::resolve_indexing_op: 38 exprs, 0 unknown, 0 partial
 processing: method_resolution::is_valid_candidate (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 27804..29304)
-In method_resolution::is_valid_candidate: 88 exprs, 0 unknown, 0 partial
+In method_resolution::is_valid_candidate: 88 exprs, 0 unknown, 1 partial
 processing: method_resolution::inherent_impl_substs (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 29306..30890)
 In method_resolution::inherent_impl_substs: 76 exprs, 0 unknown, 2 partial
 processing: method_resolution::fallback_bound_vars (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 30892..31374)
 In method_resolution::fallback_bound_vars: 28 exprs, 0 unknown, 0 partial
 processing: method_resolution::transform_receiver_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 31376..32286)
-In method_resolution::transform_receiver_ty: 59 exprs, 0 unknown, 0 partial
+In method_resolution::transform_receiver_ty: 59 exprs, 0 unknown, 1 partial
 processing: method_resolution::implements_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 32288..32606)
 In method_resolution::implements_trait: 17 exprs, 0 unknown, 0 partial
 processing: method_resolution::implements_trait_unique (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 32608..32967)
@@ -10878,7 +10883,7 @@ In method_resolution::trait_impls_in_crate_query: 19 exprs, 0 unknown, 0 partial
 processing: method_resolution::trait_impls_in_block_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 5871..6268)
 In method_resolution::trait_impls_in_block_query: 22 exprs, 0 unknown, 0 partial
 processing: method_resolution::collect_def_map (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 6274..7438)
-In method_resolution::collect_def_map: 55 exprs, 0 unknown, 0 partial
+In method_resolution::collect_def_map: 55 exprs, 0 unknown, 1 partial
 processing: method_resolution::trait_impls_in_deps_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 7444..7853)
 In method_resolution::trait_impls_in_deps_query: 23 exprs, 0 unknown, 0 partial
 processing: method_resolution::merge (/home/dawer/source/rust-analyzer/crates/hir_ty/src/method_resolution.rs 7859..8165)
@@ -10906,9 +10911,9 @@ In tls::debug_struct_id: 36 exprs, 0 unknown, 0 partial
 processing: tls::debug_trait_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tls.rs 902..1214)
 In tls::debug_trait_id: 23 exprs, 0 unknown, 0 partial
 processing: tls::debug_assoc_type_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tls.rs 1220..1820)
-In tls::debug_assoc_type_id: 46 exprs, 0 unknown, 0 partial
+In tls::debug_assoc_type_id: 46 exprs, 0 unknown, 1 partial
 processing: tls::debug_projection_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tls.rs 1826..2794)
-In tls::debug_projection_ty: 111 exprs, 0 unknown, 0 partial
+In tls::debug_projection_ty: 111 exprs, 0 unknown, 2 partial
 processing: tls::debug_fn_def_id (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tls.rs 2800..3669)
 In tls::debug_fn_def_id: 63 exprs, 0 unknown, 0 partial
 processing: tls::unsafe_tls::with_current_program (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tls.rs 3854..4105)
@@ -10918,29 +10923,29 @@ In tls::unsafe_tls::set_current_program: 16 exprs, 0 unknown, 0 partial
 processing: chalk_db::program_clauses_for_chalk_env_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 16191..16465)
 In chalk_db::program_clauses_for_chalk_env_query: 9 exprs, 0 unknown, 0 partial
 processing: chalk_db::associated_ty_data_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 16467..18259)
-In chalk_db::associated_ty_data_query: 125 exprs, 0 unknown, 0 partial
+In chalk_db::associated_ty_data_query: 125 exprs, 0 unknown, 3 partial
 processing: chalk_db::trait_datum_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 18261..19662)
-In chalk_db::trait_datum_query: 155 exprs, 0 unknown, 0 partial
+In chalk_db::trait_datum_query: 155 exprs, 0 unknown, 3 partial
 processing: chalk_db::well_known_trait_from_lang_attr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 19664..20251)
 In chalk_db::well_known_trait_from_lang_attr: 27 exprs, 0 unknown, 0 partial
 processing: chalk_db::lang_attr_from_well_known_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 20253..20850)
 In chalk_db::lang_attr_from_well_known_trait: 14 exprs, 0 unknown, 0 partial
 processing: chalk_db::struct_datum_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 20852..22170)
-In chalk_db::struct_datum_query: 98 exprs, 0 unknown, 0 partial
+In chalk_db::struct_datum_query: 98 exprs, 0 unknown, 3 partial
 processing: chalk_db::impl_datum_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 22172..22480)
 In chalk_db::impl_datum_query: 53 exprs, 0 unknown, 0 partial
 processing: chalk_db::impl_def_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 22482..24610)
-In chalk_db::impl_def_datum: 202 exprs, 0 unknown, 0 partial
+In chalk_db::impl_def_datum: 202 exprs, 0 unknown, 2 partial
 processing: chalk_db::associated_ty_value_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 24612..24878)
 In chalk_db::associated_ty_value_query: 11 exprs, 0 unknown, 0 partial
 processing: chalk_db::type_alias_associated_ty_value (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 24880..26087)
-In chalk_db::type_alias_associated_ty_value: 54 exprs, 0 unknown, 0 partial
+In chalk_db::type_alias_associated_ty_value: 54 exprs, 0 unknown, 1 partial
 processing: chalk_db::fn_def_datum_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 26089..27334)
-In chalk_db::fn_def_datum_query: 56 exprs, 0 unknown, 0 partial
+In chalk_db::fn_def_datum_query: 56 exprs, 0 unknown, 1 partial
 processing: chalk_db::fn_def_variance_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 27336..27700)
-In chalk_db::fn_def_variance_query: 21 exprs, 0 unknown, 0 partial
+In chalk_db::fn_def_variance_query: 21 exprs, 0 unknown, 1 partial
 processing: chalk_db::adt_variance_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 27702..28015)
-In chalk_db::adt_variance_query: 17 exprs, 0 unknown, 0 partial
+In chalk_db::adt_variance_query: 17 exprs, 0 unknown, 1 partial
 processing: chalk_db::convert_where_clauses (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 28017..28435)
 In chalk_db::convert_where_clauses: 21 exprs, 0 unknown, 0 partial
 processing: chalk_db::generic_predicate_to_inline_bound (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 28437..30720)
@@ -10960,7 +10965,7 @@ In chalk_db::impl_datum: 7 exprs, 0 unknown, 0 partial
 processing: chalk_db::fn_def_datum (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 3016..3199)
 In chalk_db::fn_def_datum: 7 exprs, 0 unknown, 0 partial
 processing: chalk_db::impls_for_trait (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 3205..6551)
-In chalk_db::impls_for_trait: 259 exprs, 0 unknown, 0 partial
+In chalk_db::impls_for_trait: 259 exprs, 0 unknown, 4 partial
 processing: chalk_db::impl_provided_for (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 6556..6750)
 In chalk_db::impl_provided_for: 46 exprs, 0 unknown, 0 partial
 processing: chalk_db::associated_ty_value (/home/dawer/source/rust-analyzer/crates/hir_ty/src/chalk_db.rs 6755..6895)
@@ -12026,7 +12031,7 @@ In tests::display_source_code::render_raw_ptr_impl_ty: 4 exprs, 0 unknown, 0 par
 processing: tests::display_source_code::render_dyn_for_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/tests/display_source_code.rs 847..1021)
 In tests::display_source_code::render_dyn_for_ty: 4 exprs, 0 unknown, 0 partial
 processing: infer::infer_query (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 2059..2652)
-In infer::infer_query: 39 exprs, 0 unknown, 0 partial
+In infer::infer_query: 39 exprs, 0 unknown, 1 partial
 processing: infer::find_breakable (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 13118..13391)
 In infer::find_breakable: 15 exprs, 0 unknown, 0 partial
 processing: infer::convert (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 3040..3384)
@@ -12042,17 +12047,23 @@ In infer::method_resolution: 7 exprs, 0 unknown, 0 partial
 processing: infer::field_resolution (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 10343..10465)
 In infer::field_resolution: 7 exprs, 0 unknown, 0 partial
 processing: infer::variant_resolution_for_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 10470..10610)
-In infer::variant_resolution_for_expr: 8 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 281:38-281:47: Unknown type
+In infer::variant_resolution_for_expr: 8 exprs, 1 unknown, 1 partial
 processing: infer::variant_resolution_for_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 10615..10753)
-In infer::variant_resolution_for_pat: 8 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 284:38-284:47: Unknown type
+In infer::variant_resolution_for_pat: 8 exprs, 1 unknown, 1 partial
 processing: infer::assoc_resolutions_for_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 10758..10897)
-In infer::assoc_resolutions_for_expr: 8 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 287:36-287:45: Unknown type
+In infer::assoc_resolutions_for_expr: 8 exprs, 1 unknown, 1 partial
 processing: infer::assoc_resolutions_for_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 10902..11039)
-In infer::assoc_resolutions_for_pat: 8 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 290:36-290:45: Unknown type
+In infer::assoc_resolutions_for_pat: 8 exprs, 1 unknown, 1 partial
 processing: infer::type_mismatch_for_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 11044..11174)
-In infer::type_mismatch_for_expr: 7 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 293:34-293:45: Unknown type
+In infer::type_mismatch_for_expr: 7 exprs, 1 unknown, 1 partial
 processing: infer::type_mismatch_for_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 11179..11305)
-In infer::type_mismatch_for_pat: 7 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 296:34-296:44: Unknown type
+In infer::type_mismatch_for_pat: 7 exprs, 1 unknown, 1 partial
 processing: infer::expr_type_mismatches (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 11310..11594)
 In infer::expr_type_mismatches: 15 exprs, 0 unknown, 0 partial
 processing: infer::pat_type_mismatches (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 11599..11878)
@@ -12062,7 +12073,7 @@ In infer::index: 10 exprs, 0 unknown, 0 partial
 processing: infer::index (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 12141..12257)
 In infer::index: 10 exprs, 0 unknown, 0 partial
 processing: infer::new (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 13429..14167)
-In infer::new: 41 exprs, 0 unknown, 0 partial
+In infer::new: 41 exprs, 0 unknown, 1 partial
 processing: infer::err_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 14173..14254)
 In infer::err_ty: 6 exprs, 0 unknown, 0 partial
 processing: infer::resolve_all (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 14260..15613)
@@ -12102,11 +12113,11 @@ In infer::resolve_ty_shallow: 7 exprs, 0 unknown, 0 partial
 processing: infer::resolve_associated_type (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 18481..18651)
 In infer::resolve_associated_type: 7 exprs, 0 unknown, 0 partial
 processing: infer::resolve_associated_type_with_params (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 18657..19921)
-In infer::resolve_associated_type_with_params: 59 exprs, 0 unknown, 0 partial
+In infer::resolve_associated_type_with_params: 59 exprs, 0 unknown, 1 partial
 processing: infer::normalize_associated_types_in (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 19927..20473)
 In infer::normalize_associated_types_in: 5 exprs, 0 unknown, 0 partial
 processing: infer::resolve_variant (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 20479..25038)
-In infer::resolve_variant: 269 exprs, 0 unknown, 0 partial
+In infer::resolve_variant: 269 exprs, 0 unknown, 3 partial
 processing: infer::resolve_variant_on_alias (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 25044..26525)
 In infer::resolve_variant_on_alias: 66 exprs, 0 unknown, 0 partial
 processing: infer::collect_const (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 26531..26639)
@@ -12120,9 +12131,9 @@ In infer::infer_body: 12 exprs, 0 unknown, 0 partial
 processing: infer::resolve_lang_item (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 27908..28110)
 In infer::resolve_lang_item: 13 exprs, 0 unknown, 0 partial
 processing: infer::resolve_into_iter_item (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 28116..28386)
-In infer::resolve_into_iter_item: 29 exprs, 0 unknown, 0 partial
+In infer::resolve_into_iter_item: 29 exprs, 0 unknown, 1 partial
 processing: infer::resolve_ops_try_ok (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 28392..28883)
-In infer::resolve_ops_try_ok: 36 exprs, 0 unknown, 0 partial
+In infer::resolve_ops_try_ok: 36 exprs, 0 unknown, 1 partial
 processing: infer::resolve_ops_neg_output (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 28889..29092)
 In infer::resolve_ops_neg_output: 14 exprs, 0 unknown, 0 partial
 processing: infer::resolve_ops_not_output (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 29098..29301)
@@ -12134,17 +12145,17 @@ In infer::resolve_binary_op_output: 30 exprs, 0 unknown, 0 partial
 processing: infer::resolve_boxed_box (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 30312..30466)
 In infer::resolve_boxed_box: 11 exprs, 0 unknown, 0 partial
 processing: infer::resolve_range_full (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 30472..30686)
-In infer::resolve_range_full: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range_full: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_range (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 30692..30897)
-In infer::resolve_range: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_range_inclusive (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 30903..31127)
-In infer::resolve_range_inclusive: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range_inclusive: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_range_from (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 31133..31347)
-In infer::resolve_range_from: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range_from: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_range_to (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 31353..31563)
-In infer::resolve_range_to: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range_to: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_range_to_inclusive (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 31569..31798)
-In infer::resolve_range_to_inclusive: 26 exprs, 0 unknown, 0 partial
+In infer::resolve_range_to_inclusive: 26 exprs, 0 unknown, 1 partial
 processing: infer::resolve_ops_index (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 31804..31910)
 In infer::resolve_ops_index: 6 exprs, 0 unknown, 0 partial
 processing: infer::resolve_ops_index_output (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer.rs 31916..32104)
@@ -12180,9 +12191,9 @@ In infer::from: 4 exprs, 0 unknown, 0 partial
 processing: infer::pat::is_non_ref_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/pat.rs 11758..12679)
 In infer::pat::is_non_ref_pat: 31 exprs, 0 unknown, 0 partial
 processing: infer::pat::infer_tuple_struct_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/pat.rs 523..2048)
-In infer::pat::infer_tuple_struct_pat: 111 exprs, 0 unknown, 0 partial
+In infer::pat::infer_tuple_struct_pat: 111 exprs, 0 unknown, 1 partial
 processing: infer::pat::infer_record_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/pat.rs 2054..3189)
-In infer::pat::infer_record_pat: 85 exprs, 0 unknown, 0 partial
+In infer::pat::infer_record_pat: 85 exprs, 0 unknown, 1 partial
 processing: infer::pat::infer_pat (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/pat.rs 3195..11754)
 In infer::pat::infer_pat: 528 exprs, 0 unknown, 1 partial
 processing: infer::expr::infer_expr (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 1133..1867)
@@ -12194,27 +12205,27 @@ In infer::expr::callable_sig_from_fn_trait: 104 exprs, 0 unknown, 0 partial
 processing: infer::expr::callable_sig (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 4218..4507)
 In infer::expr::callable_sig: 19 exprs, 0 unknown, 0 partial
 processing: infer::expr::infer_expr_inner (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 4513..39022)
-In infer::expr::infer_expr_inner: 1891 exprs, 0 unknown, 2 partial
+In infer::expr::infer_expr_inner: 1891 exprs, 0 unknown, 7 partial
 processing: infer::expr::infer_block (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 39028..41151)
 In infer::expr::infer_block: 94 exprs, 0 unknown, 0 partial
 processing: infer::expr::infer_method_call (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 41157..43381)
-In infer::expr::infer_method_call: 152 exprs, 0 unknown, 0 partial
+In infer::expr::infer_method_call: 152 exprs, 0 unknown, 2 partial
 processing: infer::expr::check_call_arguments (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 43387..44488)
 In infer::expr::check_call_arguments: 46 exprs, 0 unknown, 0 partial
 processing: infer::expr::substs_for_method_call (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 44494..46285)
 In infer::expr::substs_for_method_call: 130 exprs, 0 unknown, 1 partial
 processing: infer::expr::register_obligations_for_call (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/expr.rs 46291..47974)
-In infer::expr::register_obligations_for_call: 141 exprs, 0 unknown, 0 partial
+In infer::expr::register_obligations_for_call: 141 exprs, 0 unknown, 2 partial
 processing: infer::path::infer_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 497..825)
 In infer::path::infer_path: 16 exprs, 0 unknown, 0 partial
 processing: infer::path::resolve_value_path (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 831..3982)
-In infer::path::resolve_value_path: 195 exprs, 0 unknown, 0 partial
+In infer::path::resolve_value_path: 195 exprs, 0 unknown, 2 partial
 processing: infer::path::resolve_assoc_item (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 3988..6404)
 In infer::path::resolve_assoc_item: 97 exprs, 0 unknown, 0 partial
 processing: infer::path::resolve_trait_assoc_item (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 6410..8026)
 In infer::path::resolve_trait_assoc_item: 88 exprs, 0 unknown, 0 partial
 processing: infer::path::resolve_ty_assoc_item (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 8032..10646)
-In infer::path::resolve_ty_assoc_item: 160 exprs, 0 unknown, 0 partial
+In infer::path::resolve_ty_assoc_item: 160 exprs, 0 unknown, 3 partial
 processing: infer::path::resolve_enum_variant_on_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/path.rs 10652..11314)
 In infer::path::resolve_enum_variant_on_ty: 38 exprs, 0 unknown, 0 partial
 processing: infer::unify::could_unify (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/unify.rs 3043..3199)
@@ -12332,7 +12343,7 @@ In infer::coerce::try_coerce_unsized: 214 exprs, 0 unknown, 0 partial
 processing: infer::closure::deduce_closure_type_from_expectations (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/closure.rs 414..1292)
 In infer::closure::deduce_closure_type_from_expectations: 41 exprs, 0 unknown, 0 partial
 processing: infer::closure::deduce_sig_from_dyn_ty (/home/dawer/source/rust-analyzer/crates/hir_ty/src/infer/closure.rs 1298..3705)
-In infer::closure::deduce_sig_from_dyn_ty: 128 exprs, 0 unknown, 1 partial
+In infer::closure::deduce_sig_from_dyn_ty: 128 exprs, 0 unknown, 3 partial
 processing: main (/home/dawer/source/rust-analyzer/crates/proc_macro_test/build.rs 287..1973)
 In main: 116 exprs, 0 unknown, 0 partial
 processing: assists (/home/dawer/source/rust-analyzer/crates/ide_assists/src/lib.rs 788..1236)
@@ -12630,7 +12641,7 @@ In handlers::fix_visibility::add_vis_to_referenced_module_def: 179 exprs, 0 unkn
 processing: handlers::fix_visibility::add_vis_to_referenced_record_field (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/fix_visibility.rs 2718..5052)
 In handlers::fix_visibility::add_vis_to_referenced_record_field: 203 exprs, 0 unknown, 0 partial
 processing: handlers::fix_visibility::target_data_for_def (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/fix_visibility.rs 5054..7626)
-In handlers::fix_visibility::target_data_for_def: 127 exprs, 0 unknown, 0 partial
+In handlers::fix_visibility::target_data_for_def: 127 exprs, 0 unknown, 1 partial
 processing: handlers::fix_visibility::tests::fix_visibility_of_fn (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/fix_visibility.rs 7744..8186)
 In handlers::fix_visibility::tests::fix_visibility_of_fn: 10 exprs, 0 unknown, 0 partial
 processing: handlers::fix_visibility::tests::fix_visibility_of_adt_in_submodule (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/fix_visibility.rs 8192..9418)
@@ -14090,7 +14101,8 @@ In handlers::extract_function::has_exclusive_usages: 16 exprs, 0 unknown, 0 part
 processing: handlers::extract_function::reference_is_exclusive (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/extract_function.rs 28412..29003)
 In handlers::extract_function::reference_is_exclusive: 26 exprs, 0 unknown, 0 partial
 processing: handlers::extract_function::expr_require_exclusive_access (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/extract_function.rs 29005..30223)
-In handlers::extract_function::expr_require_exclusive_access: 96 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/extract_function.rs 882:51-882:63: Unknown type
+In handlers::extract_function::expr_require_exclusive_access: 96 exprs, 1 unknown, 1 partial
 processing: handlers::extract_function::path_element_of_reference (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/extract_function.rs 31859..32715)
 In handlers::extract_function::path_element_of_reference: 217 exprs, 0 unknown, 0 partial
 processing: handlers::extract_function::locals_defined_in_body (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/extract_function.rs 32717..33271)
@@ -14576,7 +14588,8 @@ In handlers::convert_comment_block::block_to_line: 105 exprs, 0 unknown, 0 parti
 processing: handlers::convert_comment_block::line_to_block (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/convert_comment_block.rs 2262..3617)
 In handlers::convert_comment_block::line_to_block: 78 exprs, 0 unknown, 0 partial
 processing: handlers::convert_comment_block::relevant_line_comments (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/convert_comment_block.rs 3619..5208)
-In handlers::convert_comment_block::relevant_line_comments: 78 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/convert_comment_block.rs 143:4-143:22: Unknown type
+In handlers::convert_comment_block::relevant_line_comments: 78 exprs, 1 unknown, 0 partial
 processing: handlers::convert_comment_block::line_comment_text (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/convert_comment_block.rs 5210..6118)
 In handlers::convert_comment_block::line_comment_text: 23 exprs, 0 unknown, 0 partial
 processing: handlers::convert_comment_block::tests::single_line_to_block (/home/dawer/source/rust-analyzer/crates/ide_assists/src/handlers/convert_comment_block.rs 6236..6476)
@@ -14911,7 +14924,7 @@ In utils::generate_impl_text: 6 exprs, 0 unknown, 0 partial
 processing: utils::generate_trait_impl_text (/home/dawer/source/rust-analyzer/crates/ide_assists/src/utils.rs 13618..13880)
 In utils::generate_trait_impl_text: 8 exprs, 0 unknown, 0 partial
 processing: utils::generate_impl_text_inner (/home/dawer/source/rust-analyzer/crates/ide_assists/src/utils.rs 13882..16262)
-In utils::generate_impl_text_inner: 287 exprs, 0 unknown, 0 partial
+In utils::generate_impl_text_inner: 287 exprs, 0 unknown, 2 partial
 processing: utils::add_method_to_adt (/home/dawer/source/rust-analyzer/crates/ide_assists/src/utils.rs 16264..16826)
 In utils::add_method_to_adt: 43 exprs, 0 unknown, 0 partial
 processing: utils::useless_type_special_case (/home/dawer/source/rust-analyzer/crates/ide_assists/src/utils.rs 16828..17559)
@@ -15043,7 +15056,7 @@ In discover_single: 30 exprs, 0 unknown, 0 partial
 processing: discover (/home/dawer/source/rust-analyzer/crates/project_model/src/lib.rs 2706..4607)
 In discover: 30 exprs, 0 unknown, 0 partial
 processing: discover_all (/home/dawer/source/rust-analyzer/crates/project_model/src/lib.rs 4613..4961)
-In discover_all: 17 exprs, 0 unknown, 0 partial
+In discover_all: 17 exprs, 0 unknown, 1 partial
 processing: build_scripts::is_dylib (/home/dawer/source/rust-analyzer/crates/project_model/src/build_scripts.rs 8155..8414)
 In build_scripts::is_dylib: 18 exprs, 0 unknown, 0 partial
 processing: build_scripts::run (/home/dawer/source/rust-analyzer/crates/project_model/src/build_scripts.rs 1565..8151)
@@ -15131,7 +15144,7 @@ In manifest_path::parent: 5 exprs, 0 unknown, 0 partial
 processing: manifest_path::deref (/home/dawer/source/rust-analyzer/crates/project_model/src/manifest_path.rs 1141..1201)
 In manifest_path::deref: 5 exprs, 0 unknown, 0 partial
 processing: manifest_path::as_ref (/home/dawer/source/rust-analyzer/crates/project_model/src/manifest_path.rs 1245..1305)
-In manifest_path::as_ref: 4 exprs, 0 unknown, 0 partial
+In manifest_path::as_ref: 4 exprs, 0 unknown, 1 partial
 processing: rustc_cfg::get (/home/dawer/source/rust-analyzer/crates/project_model/src/rustc_cfg.rs 166..939)
 In rustc_cfg::get: 94 exprs, 0 unknown, 0 partial
 processing: rustc_cfg::get_rust_cfgs (/home/dawer/source/rust-analyzer/crates/project_model/src/rustc_cfg.rs 941..2002)
@@ -15832,7 +15845,9 @@ In cli::is_spammy: 6 exprs, 0 unknown, 0 partial
 processing: cli::diagnostics::all_modules (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs 423..766)
 In cli::diagnostics::all_modules: 28 exprs, 0 unknown, 0 partial
 processing: cli::diagnostics::diagnostics (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs 768..2588)
-In cli::diagnostics::diagnostics: 168 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs 36:23-36:41: Unknown type
+/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs 40:33-40:45: Unknown type
+In cli::diagnostics::diagnostics: 168 exprs, 2 unknown, 2 partial
 processing: cli::load_cargo::load_workspace_at (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/load_cargo.rs 813..1453)
 In cli::load_cargo::load_workspace_at: 25 exprs, 0 unknown, 0 partial
 processing: cli::load_cargo::load_workspace (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/cli/load_cargo.rs 1455..3455)
@@ -15923,7 +15938,8 @@ In global_state::file_id_to_url: 10 exprs, 0 unknown, 0 partial
 processing: global_state::url_to_file_id (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/global_state.rs 13071..13289)
 In global_state::url_to_file_id: 30 exprs, 0 unknown, 0 partial
 processing: global_state::new (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/global_state.rs 4965..7005)
-In global_state::new: 92 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/global_state.rs 151:44-151:62: Unknown type
+In global_state::new: 92 exprs, 1 unknown, 3 partial
 processing: global_state::process_changes (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/global_state.rs 7011..8771)
 In global_state::process_changes: 104 exprs, 0 unknown, 0 partial
 processing: global_state::snapshot (/home/dawer/source/rust-analyzer/crates/rust-analyzer/src/global_state.rs 8777..9323)
@@ -17037,13 +17053,15 @@ In body::lower::collect_expr_opt: 10 exprs, 0 unknown, 0 partial
 processing: body::lower::collect_stmt (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 26581..29041)
 In body::lower::collect_stmt: 127 exprs, 0 unknown, 0 partial
 processing: body::lower::collect_block (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 29047..30810)
-In body::lower::collect_block: 134 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 729:43-729:55: Unknown type
+In body::lower::collect_block: 134 exprs, 1 unknown, 1 partial
 processing: body::lower::collect_block_opt (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 30816..31028)
 In body::lower::collect_block_opt: 10 exprs, 0 unknown, 0 partial
 processing: body::lower::collect_label (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 31034..31295)
 In body::lower::collect_label: 15 exprs, 0 unknown, 0 partial
 processing: body::lower::collect_pat (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 31301..38352)
-In body::lower::collect_pat: 322 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 768:25-768:44: Unknown type
+In body::lower::collect_pat: 322 exprs, 1 unknown, 1 partial
 processing: body::lower::collect_pat_opt (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 38358..38552)
 In body::lower::collect_pat_opt: 10 exprs, 0 unknown, 0 partial
 processing: body::lower::collect_tuple_pat (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/lower.rs 38558..39149)
@@ -17097,7 +17115,8 @@ In body::scope::set_scope: 6 exprs, 0 unknown, 0 partial
 processing: body::scope::tests::find_function (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/scope.rs 7723..8165)
 In body::scope::tests::find_function: 28 exprs, 0 unknown, 0 partial
 processing: body::scope::tests::do_check (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/scope.rs 8171..9496)
-In body::scope::tests::do_check: 171 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/body/scope.rs 265:65-265:78: Unknown type
+In body::scope::tests::do_check: 171 exprs, 1 unknown, 1 partial
 processing: body::scope::tests::test_lambda_scope (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/scope.rs 9502..9756)
 In body::scope::tests::test_lambda_scope: 9 exprs, 0 unknown, 0 partial
 processing: body::scope::tests::test_call_scope (/home/dawer/source/rust-analyzer/crates/hir_def/src/body/scope.rs 9762..9934)
@@ -17225,7 +17244,7 @@ In import_map::exclude_import_kind: 6 exprs, 0 unknown, 0 partial
 processing: import_map::import_matches (/home/dawer/source/rust-analyzer/crates/hir_def/src/import_map.rs 11305..12974)
 In import_map::import_matches: 97 exprs, 0 unknown, 0 partial
 processing: import_map::tests::check_search (/home/dawer/source/rust-analyzer/crates/hir_def/src/import_map.rs 16184..17898)
-In import_map::tests::check_search: 105 exprs, 0 unknown, 0 partial
+In import_map::tests::check_search: 105 exprs, 0 unknown, 2 partial
 processing: import_map::tests::assoc_item_path (/home/dawer/source/rust-analyzer/crates/hir_def/src/import_map.rs 17904..19209)
 In import_map::tests::assoc_item_path: 73 exprs, 0 unknown, 0 partial
 processing: import_map::tests::assoc_to_trait (/home/dawer/source/rust-analyzer/crates/hir_def/src/import_map.rs 19215..20066)
@@ -17815,64 +17834,44 @@ In resolver::resolver: 13 exprs, 0 unknown, 0 partial
 processing: db::crate_def_map_wait (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5938..6100)
 In db::crate_def_map_wait: 7 exprs, 0 unknown, 0 partial
 processing: db::intern_function (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 1488..1701)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_function: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_function (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 1701..1931)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_function: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_struct (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 1931..2132)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_struct: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_struct (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 2132..2350)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_struct: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_union (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 2350..2545)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_union: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_union (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 2545..2757)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_union: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_enum (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 2757..2946)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_enum: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_enum (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 2946..3152)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_enum: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_const (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3152..3347)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_const: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_const (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3347..3559)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_const: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_static (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3559..3760)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_static: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_static (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3760..3978)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_static: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_trait (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3978..4173)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_trait: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_trait (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4173..4385)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_trait: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_type_alias (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4385..4605)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_type_alias: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_type_alias (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4605..4842)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_type_alias: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_impl (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4842..5031)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_impl: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_impl (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5031..5237)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_impl: 5 exprs, 0 unknown, 0 partial
 processing: db::intern_block (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5237..5432)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::intern_block: 5 exprs, 0 unknown, 0 partial
 processing: db::lookup_intern_block (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5432..5644)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Expected &dyn InternDatabase, got &DB
 In db::lookup_intern_block: 5 exprs, 0 unknown, 0 partial
 processing: db::in_db (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5722..6147)
 In db::in_db: 4 exprs, 0 unknown, 0 partial
@@ -17995,7 +17994,27 @@ In db::in_db_mut: 4 exprs, 0 unknown, 0 partial
 processing: db::query_storage (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 64173..64329)
 In db::query_storage: 4 exprs, 0 unknown, 0 partial
 processing: db::new (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 66082..67931)
-In db::new: 102 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 28:0-50:1: Unknown type
+In db::new: 102 exprs, 20 unknown, 60 partial
 processing: db::fmt_index (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 67965..70011)
 In db::fmt_index: 240 exprs, 0 unknown, 0 partial
 processing: db::maybe_changed_since (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 70011..72325)
@@ -18003,94 +18022,64 @@ In db::maybe_changed_since: 240 exprs, 0 unknown, 0 partial
 processing: db::for_each_query (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 72325..73028)
 In db::for_each_query: 121 exprs, 0 unknown, 0 partial
 processing: db::enable_proc_attr_macros (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3607..3779)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::enable_proc_attr_macros: 4 exprs, 0 unknown, 0 partial
 processing: db::set_enable_proc_attr_macros (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3779..3986)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &mut dyn DefDatabase, got &mut DB
 In db::set_enable_proc_attr_macros: 5 exprs, 0 unknown, 0 partial
 processing: db::set_enable_proc_attr_macros_with_durability (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 3986..4313)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &mut dyn DefDatabase, got &mut DB
 In db::set_enable_proc_attr_macros_with_durability: 6 exprs, 0 unknown, 0 partial
 processing: db::file_item_tree (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4313..4522)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::file_item_tree: 5 exprs, 0 unknown, 0 partial
 processing: db::crate_def_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4522..4601)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::crate_def_map: 5 exprs, 0 unknown, 0 partial
 processing: db::crate_def_map_query (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4601..4811)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::crate_def_map_query: 5 exprs, 0 unknown, 0 partial
 processing: db::block_def_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 4811..5028)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::block_def_map: 5 exprs, 0 unknown, 0 partial
 processing: db::struct_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5028..5234)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::struct_data: 5 exprs, 0 unknown, 0 partial
 processing: db::union_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5234..5436)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::union_data: 5 exprs, 0 unknown, 0 partial
 processing: db::enum_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5436..5630)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::enum_data: 5 exprs, 0 unknown, 0 partial
 processing: db::impl_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5630..5824)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::impl_data: 5 exprs, 0 unknown, 0 partial
 processing: db::trait_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 5824..6024)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::trait_data: 5 exprs, 0 unknown, 0 partial
 processing: db::type_alias_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 6024..6249)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::type_alias_data: 5 exprs, 0 unknown, 0 partial
 processing: db::function_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 6249..6467)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::function_data: 5 exprs, 0 unknown, 0 partial
 processing: db::const_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 6467..6667)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::const_data: 5 exprs, 0 unknown, 0 partial
 processing: db::static_data (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 6667..6873)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::static_data: 5 exprs, 0 unknown, 0 partial
 processing: db::body_with_source_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 6873..7137)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::body_with_source_map: 5 exprs, 0 unknown, 0 partial
 processing: db::body (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 7137..7328)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::body: 5 exprs, 0 unknown, 0 partial
 processing: db::expr_scopes (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 7328..7544)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::expr_scopes: 5 exprs, 0 unknown, 0 partial
 processing: db::generic_params (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 7544..7780)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::generic_params: 5 exprs, 0 unknown, 0 partial
 processing: db::variants_attrs (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 7780..8038)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::variants_attrs: 5 exprs, 0 unknown, 0 partial
 processing: db::fields_attrs (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 8038..8286)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::fields_attrs: 5 exprs, 0 unknown, 0 partial
 processing: db::variants_attrs_source_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 8286..8596)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::variants_attrs_source_map: 5 exprs, 0 unknown, 0 partial
 processing: db::fields_attrs_source_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 8596..8972)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::fields_attrs_source_map: 5 exprs, 0 unknown, 0 partial
 processing: db::attrs (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 8972..9167)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::attrs: 5 exprs, 0 unknown, 0 partial
 processing: db::crate_lang_items (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 9167..9378)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::crate_lang_items: 5 exprs, 0 unknown, 0 partial
 processing: db::lang_item (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 9378..9628)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::lang_item: 6 exprs, 0 unknown, 0 partial
 processing: db::import_map (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 9628..9828)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::import_map: 5 exprs, 0 unknown, 0 partial
 processing: db::field_visibilities (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 9828..10098)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::field_visibilities: 5 exprs, 0 unknown, 0 partial
 processing: db::function_visibility (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 10098..10314)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Expected &dyn DefDatabase, got &DB
 In db::function_visibility: 5 exprs, 0 unknown, 0 partial
 processing: db::in_db (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 10404..10832)
 In db::in_db: 4 exprs, 0 unknown, 0 partial
@@ -18307,7 +18296,34 @@ In db::query_storage: 4 exprs, 0 unknown, 0 partial
 processing: db::execute (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 93924..94088)
 In db::execute: 5 exprs, 0 unknown, 0 partial
 processing: db::new (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 96281..98679)
-In db::new: 137 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 52:0-158:1: Unknown type
+In db::new: 137 exprs, 27 unknown, 81 partial
 processing: db::fmt_index (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 98710..101326)
 In db::fmt_index: 317 exprs, 0 unknown, 0 partial
 processing: db::maybe_changed_since (/home/dawer/source/rust-analyzer/crates/hir_def/src/db.rs 101326..104308)
@@ -19027,7 +19043,6 @@ In item_tree::index: 6 exprs, 0 unknown, 0 partial
 processing: item_tree::use_tree_to_ast (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree.rs 22962..23718)
 In item_tree::use_tree_to_ast: 30 exprs, 0 unknown, 0 partial
 processing: item_tree::expand (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree.rs 24047..24288)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree.rs 795:31-795:38: Expected &mut dyn FnMut(Idx<UseTree>, ModPath, ImportKind, Option<ImportAlias>), got &mut impl FnMut(Idx<UseTree>, ModPath, ImportKind, Option<ImportAlias>)
 In item_tree::expand: 6 exprs, 0 unknown, 0 partial
 processing: item_tree::expand_impl (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree.rs 24294..26568)
 In item_tree::expand_impl: 72 exprs, 0 unknown, 0 partial
@@ -19138,11 +19153,9 @@ In item_tree::lower::lower_extern_block: 130 exprs, 0 unknown, 0 partial
 processing: item_tree::lower::lower_generic_params_and_inner_items (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 26966..27609)
 In item_tree::lower::lower_generic_params_and_inner_items: 23 exprs, 0 unknown, 0 partial
 processing: item_tree::lower::lower_generic_params (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 27615..29755)
-/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 670:50-670:54: Expected &dyn GenericParamsOwner, got &impl GenericParamsOwner
-/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 682:50-682:54: Expected &dyn GenericParamsOwner, got &impl GenericParamsOwner
-/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 696:55-696:59: Expected &dyn GenericParamsOwner, got &impl GenericParamsOwner
-/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 702:55-702:59: Expected &dyn GenericParamsOwner, got &impl GenericParamsOwner
-In item_tree::lower::lower_generic_params: 94 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 691:16-691:30: Unknown type
+/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 691:16-691:86: Unknown type
+In item_tree::lower::lower_generic_params: 94 exprs, 2 unknown, 2 partial
 processing: item_tree::lower::lower_type_bounds (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 29761..30122)
 In item_tree::lower::lower_type_bounds: 19 exprs, 0 unknown, 0 partial
 processing: item_tree::lower::lower_visibility (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/lower.rs 30128..30453)
@@ -19176,7 +19189,8 @@ In item_tree::pretty::whitespace: 13 exprs, 0 unknown, 0 partial
 processing: item_tree::pretty::print_attrs (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/pretty.rs 2035..2440)
 In item_tree::pretty::print_attrs: 51 exprs, 0 unknown, 0 partial
 processing: item_tree::pretty::print_attrs_of (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/pretty.rs 2446..2625)
-In item_tree::pretty::print_attrs_of: 15 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/pretty.rs 102:50-102:59: Unknown type
+In item_tree::pretty::print_attrs_of: 15 exprs, 1 unknown, 1 partial
 processing: item_tree::pretty::print_visibility (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/pretty.rs 2631..2860)
 In item_tree::pretty::print_visibility: 30 exprs, 0 unknown, 0 partial
 processing: item_tree::pretty::print_fields (/home/dawer/source/rust-analyzer/crates/hir_def/src/item_tree/pretty.rs 2866..4195)
@@ -19868,9 +19882,9 @@ In parser::eq: 37 exprs, 0 unknown, 0 partial
 processing: parser::tt_count (/home/dawer/source/rust-analyzer/crates/mbe/src/parser.rs 3207..3409)
 In parser::tt_count: 7 exprs, 0 unknown, 0 partial
 processing: expand (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/lib.rs 1016..1801)
-In expand: 77 exprs, 0 unknown, 0 partial
+In expand: 77 exprs, 0 unknown, 1 partial
 processing: list_macros (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/lib.rs 1807..2025)
-In list_macros: 12 exprs, 0 unknown, 0 partial
+In list_macros: 12 exprs, 0 unknown, 1 partial
 processing: expander (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/lib.rs 2031..2605)
 /home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/lib.rs 66:8-71:10: Expected Result<&Expander, String>, got Result<&mut Expander, {unknown}>
 /home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/lib.rs 61:76-72:5: Expected Result<&Expander, String>, got Result<&mut Expander, {unknown}>
@@ -19900,7 +19914,7 @@ In dylib::from: 4 exprs, 0 unknown, 0 partial
 processing: dylib::open (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/dylib.rs 3409..4074)
 In dylib::open: 74 exprs, 0 unknown, 0 partial
 processing: dylib::new (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/dylib.rs 4162..4567)
-In dylib::new: 18 exprs, 0 unknown, 0 partial
+In dylib::new: 18 exprs, 0 unknown, 1 partial
 processing: dylib::expand (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/dylib.rs 4573..4917)
 In dylib::expand: 17 exprs, 0 unknown, 0 partial
 processing: dylib::list_macros (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/dylib.rs 4923..5025)
@@ -20928,7 +20942,7 @@ In abis::abi_1_55::proc_macro::bridge::client::attr: 6 exprs, 0 unknown, 0 parti
 processing: abis::abi_1_55::proc_macro::bridge::client::bang (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_55/proc_macro/bridge/client.rs 16055..16218)
 In abis::abi_1_55::proc_macro::bridge::client::bang: 6 exprs, 0 unknown, 0 partial
 processing: abis::abi_1_55::proc_macro::tracked_env::var (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_55/proc_macro/mod.rs 34042..34816)
-In abis::abi_1_55::proc_macro::tracked_env::var: 17 exprs, 0 unknown, 0 partial
+In abis::abi_1_55::proc_macro::tracked_env::var: 17 exprs, 0 unknown, 1 partial
 processing: abis::abi_1_55::proc_macro::token_stream::next (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_55/proc_macro/mod.rs 5380..5810)
 In abis::abi_1_55::proc_macro::token_stream::next: 28 exprs, 0 unknown, 0 partial
 processing: abis::abi_1_55::proc_macro::token_stream::into_iter (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_55/proc_macro/mod.rs 5932..6015)
@@ -22158,7 +22172,7 @@ In abis::abi_1_47::proc_macro::bridge::client::attr: 6 exprs, 0 unknown, 0 parti
 processing: abis::abi_1_47::proc_macro::bridge::client::bang (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_47/proc_macro/bridge/client.rs 16055..16218)
 In abis::abi_1_47::proc_macro::bridge::client::bang: 6 exprs, 0 unknown, 0 partial
 processing: abis::abi_1_47::proc_macro::tracked_env::var (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_47/proc_macro/mod.rs 33687..34461)
-In abis::abi_1_47::proc_macro::tracked_env::var: 17 exprs, 0 unknown, 0 partial
+In abis::abi_1_47::proc_macro::tracked_env::var: 17 exprs, 0 unknown, 1 partial
 processing: abis::abi_1_47::proc_macro::token_stream::next (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_47/proc_macro/mod.rs 5301..5731)
 In abis::abi_1_47::proc_macro::token_stream::next: 28 exprs, 0 unknown, 0 partial
 processing: abis::abi_1_47::proc_macro::token_stream::into_iter (/home/dawer/source/rust-analyzer/crates/proc_macro_srv/src/abis/abi_1_47/proc_macro/mod.rs 5853..5936)
@@ -22812,7 +22826,8 @@ In context::is_doc_hidden: 20 exprs, 0 unknown, 0 partial
 processing: context::fill_impl_def (/home/dawer/source/rust-analyzer/crates/ide_completion/src/context.rs 15666..15927)
 In context::fill_impl_def: 23 exprs, 0 unknown, 0 partial
 processing: context::expected_type_and_name (/home/dawer/source/rust-analyzer/crates/ide_completion/src/context.rs 15933..21167)
-In context::expected_type_and_name: 339 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/ide_completion/src/context.rs 530:57-530:66: Unknown type
+In context::expected_type_and_name: 339 exprs, 1 unknown, 1 partial
 processing: context::fill (/home/dawer/source/rust-analyzer/crates/ide_completion/src/context.rs 21173..23112)
 In context::fill: 119 exprs, 0 unknown, 0 partial
 processing: context::classify_lifetime (/home/dawer/source/rust-analyzer/crates/ide_completion/src/context.rs 23118..24134)
@@ -22962,10 +22977,12 @@ In patterns::is_in_loop_body: 55 exprs, 0 unknown, 0 partial
 processing: patterns::previous_non_trivia_token (/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 13023..13335)
 In patterns::previous_non_trivia_token: 25 exprs, 0 unknown, 0 partial
 processing: patterns::tests::check_location (/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 13462..13908)
+/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 364:24-364:88: Unknown type
+/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 366:75-366:84: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 367:12-367:22: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 365:8-368:9: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 365:8-368:9: Unknown type
-In patterns::tests::check_location: 56 exprs, 3 unknown, 6 partial
+In patterns::tests::check_location: 56 exprs, 5 unknown, 9 partial
 processing: patterns::tests::check_prev_sibling (/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 13914..14248)
 /home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 374:53-374:67: Unknown type
 /home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 374:12-374:68: Unknown type
@@ -23072,7 +23089,7 @@ In render::builder_ext::is_empty: 5 exprs, 0 unknown, 0 partial
 processing: render::builder_ext::should_add_parens (/home/dawer/source/rust-analyzer/crates/ide_completion/src/render/builder_ext.rs 558..1454)
 In render::builder_ext::should_add_parens: 50 exprs, 0 unknown, 0 partial
 processing: render::builder_ext::add_call_parens (/home/dawer/source/rust-analyzer/crates/ide_completion/src/render/builder_ext.rs 1460..2874)
-In render::builder_ext::add_call_parens: 159 exprs, 0 unknown, 0 partial
+In render::builder_ext::add_call_parens: 159 exprs, 0 unknown, 1 partial
 processing: render::tests::check (/home/dawer/source/rust-analyzer/crates/ide_completion/src/render.rs 12633..12819)
 In render::tests::check: 9 exprs, 0 unknown, 0 partial
 processing: render::tests::check_relevance (/home/dawer/source/rust-analyzer/crates/ide_completion/src/render.rs 12825..12989)
@@ -24228,7 +24245,8 @@ In tests::check_why_inactive: 33 exprs, 0 unknown, 0 partial
 processing: tests::check_enable_hints (/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 1358..1882)
 In tests::check_enable_hints: 59 exprs, 0 unknown, 0 partial
 processing: tests::test_cfg_expr_parser (/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 1884..2964)
-In tests::test_cfg_expr_parser: 89 exprs, 0 unknown, 0 partial
+/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 59:30-59:64: Unknown type
+In tests::test_cfg_expr_parser: 89 exprs, 1 unknown, 2 partial
 processing: tests::smoke (/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 2966..3412)
 In tests::smoke: 55 exprs, 0 unknown, 0 partial
 processing: tests::distribute (/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 3414..4049)
@@ -24243,41 +24261,42 @@ processing: tests::hints_impossible (/home/dawer/source/rust-analyzer/crates/cfg
 In tests::hints_impossible: 21 exprs, 0 unknown, 0 partial
 processing: tests::why_inactive (/home/dawer/source/rust-analyzer/crates/cfg/src/tests.rs 5828..6812)
 In tests::why_inactive: 88 exprs, 0 unknown, 0 partial
-  exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 174
-Inference:           65.06s, 116ginstr, 516mb
-Total:               98.79s, 190ginstr, 855mb
-    91mb FileItemTreeQuery
-    55mb HygieneFrameQuery
+  exprs: 318994, ??ty: 549 (0%), ?ty: 1216 (0%), !ty: 41
+Inference:           105.20s, 234ginstr, 543mb
+Total:               136.88s, 307ginstr, 881mb
+    89mb FileItemTreeQuery
+    56mb HygieneFrameQuery
     45mb CrateDefMapQueryQuery
     44mb TraitImplsInDepsQuery
-    40mb BodyQuery
+    41mb BodyQuery
     39mb MacroArgTextQuery
+    38mb TraitSolveQueryQuery (purge)
     38mb FileTextQuery (purge)
     33mb BodyWithSourceMapQuery
-    33mb TraitSolveQueryQuery (purge)
-    26mb InferQueryQuery
+    25mb InferQueryQuery
+    22mb TraitSolveQueryQuery (deps)
     19mb InferQueryQuery (deps)
     19mb ExprScopesQuery
     18mb InternMacroQuery
-    14mb TraitSolveQueryQuery (deps)
+    13mb AttrsQuery (purge)
+    12mb ParseQuery
     12mb ImplDatumQuery (purge)
     12mb GenericParamsQuery (purge)
-    12mb ParseQuery
+    11mb ImplDatumQuery
     11mb ParseMacroExpansionQuery (purge)
     11mb InternMacroQuery (purge)
     10mb AstIdMapQuery
      9mb MacroExpandQuery (purge)
-     9mb ImplDatumQuery
-     9mb FunctionDataQuery
      8mb MacroDefQuery
+     8mb FunctionDataQuery
      8mb AstIdMapQuery (purge)
      8mb MacroArgTextQuery (purge)
      7mb ImplTraitQuery (purge)
      7mb FileItemTreeQuery (purge)
-     6mb AttrsQuery (purge)
      6mb ImplDataQuery (purge)
      6mb ImplSelfTyQuery (purge)
      6mb CrateGraphQuery (purge)
+     6mb AttrsQuery
      6mb BlockDefMapQuery
      6mb InternFunctionQuery (purge)
      5mb BlockDefMapQuery (purge)
@@ -24285,127 +24304,130 @@ Total:               98.79s, 190ginstr, 855mb
      4mb ImplDataQuery
      4mb GenericPredicatesQuery (purge)
      4mb ImplDatumQuery (deps)
-  4062kb ImplDataQuery (deps)
-  4034kb FileItemTreeQuery (deps)
+  4069kb ImplDataQuery (deps)
+  4033kb FileItemTreeQuery (deps)
   3584kb InternImplQuery (purge)
-  3532kb HygieneFrameQuery (purge)
-  3400kb BodyWithSourceMapQuery (deps)
-  3360kb AttrsQuery
-  3257kb FunctionDataQuery (purge)
-  3012kb ImplTraitQuery (deps)
-  2947kb InternImplQuery
-  2924kb InferQueryQuery (purge)
-  2888kb BodyWithSourceMapQuery (purge)
-  2792kb HygieneFrameQuery (deps)
-  2758kb ImplSelfTyQuery (deps)
-  2539kb MacroArgTextQuery (deps)
-  2422kb MacroExpandQuery (deps)
-  2313kb BodyQuery (purge)
-  2286kb GenericParamsQuery (deps)
-  2255kb TraitImplsInCrateQuery
-  2236kb ParseMacroExpansionQuery (deps)
-  2160kb TraitEnvironmentQuery (purge)
-  2141kb ExprScopesQuery (purge)
-  1993kb FileSourceRootQuery (purge)
-  1920kb TyQuery (purge)
-  1896kb CallableItemSignatureQuery (purge)
-  1870kb AssociatedTyValueQuery (purge)
-  1866kb ValueTyQuery (purge)
-  1674kb StructDataQuery
-  1667kb GenericParamsQuery
-  1659kb BlockDefMapQuery (deps)
-  1623kb AstIdMapQuery (deps)
-  1598kb GenericPredicatesQuery (deps)
-  1570kb SourceRootQuery (purge)
-  1405kb BodyQuery (deps)
-  1252kb AttrsQuery (deps)
-  1184kb GenericDefaultsQuery (purge)
-  1159kb EnumDataQuery
-  1154kb FunctionDataQuery (deps)
-  1098kb GenericPredicatesQuery
-  1076kb TraitEnvironmentQuery
-  1010kb TyQuery (deps)
-  1006kb InternConstQuery
-   999kb StructDatumQuery (purge)
-   958kb CrateDefMapQueryQuery (deps)
+  3509kb HygieneFrameQuery (purge)
+  3311kb BodyWithSourceMapQuery (deps)
+  3263kb FunctionDataQuery (purge)
+  3128kb InferQueryQuery (purge)
+  3001kb ImplTraitQuery (deps)
+  2946kb InternImplQuery
+  2922kb BodyWithSourceMapQuery (purge)
+  2876kb HygieneFrameQuery (deps)
+  2763kb ImplSelfTyQuery (deps)
+  2744kb SourceRootQuery (purge)
+  2602kb MacroArgTextQuery (deps)
+  2435kb MacroExpandQuery (deps)
+  2309kb BodyQuery (purge)
+  2298kb GenericParamsQuery (deps)
+  2282kb TraitImplsInCrateQuery
+  2229kb ParseMacroExpansionQuery (deps)
+  2194kb AttrsQuery (deps)
+  2162kb TraitEnvironmentQuery (purge)
+  2146kb ExprScopesQuery (purge)
+  1948kb TyQuery (purge)
+  1877kb AssociatedTyValueQuery (purge)
+  1869kb ValueTyQuery (purge)
+  1845kb CallableItemSignatureQuery (purge)
+  1783kb GenericPredicatesQuery (deps)
+  1734kb GenericPredicatesQuery
+  1707kb GenericParamsQuery
+  1679kb BlockDefMapQuery (deps)
+  1645kb AstIdMapQuery (deps)
+  1555kb StructDataQuery
+  1383kb BodyQuery (deps)
+  1168kb GenericDefaultsQuery (purge)
+  1143kb FunctionDataQuery (deps)
+  1138kb FileSourceRootQuery (purge)
+  1116kb StructDatumQuery
+  1092kb EnumDataQuery
+  1042kb StructDatumQuery (purge)
+  1032kb TyQuery (deps)
+   975kb InternConstQuery
+   956kb CrateDefMapQueryQuery (deps)
    934kb InternCallableDefQuery (purge)
-   927kb StructDatumQuery
-   922kb CallableItemSignatureQuery (deps)
+   919kb TraitEnvironmentQuery
+   905kb TraitEnvironmentQuery (deps)
+   900kb CallableItemSignatureQuery (deps)
    896kb InternConstQuery (purge)
    768kb InternTypeAliasQuery (purge)
-   740kb TraitEnvironmentQuery (deps)
-   685kb AssociatedTyValueQuery (deps)
+   673kb AssociatedTyValueQuery (deps)
    662kb TypeAliasDataQuery
-   660kb AssociatedTyValueQuery
-   656kb TypeAliasDataQuery (purge)
-   610kb InternTypeAliasQuery
-   600kb ExprScopesQuery (deps)
-   511kb ValueTyQuery
-   471kb ParseQuery (purge)
-   453kb ValueTyQuery (deps)
+   654kb TypeAliasDataQuery (purge)
+   639kb InternTypeAliasQuery
+   624kb AssociatedTyValueQuery
+   601kb ExprScopesQuery (deps)
+   590kb ParseMacroExpansionQuery
+   480kb ValueTyQuery
+   469kb ValueTyQuery (deps)
+   449kb ParseQuery (purge)
    448kb InternStructQuery (purge)
+   442kb TraitDatumQuery (purge)
+   428kb CallableItemSignatureQuery
    412kb FieldTypesQuery (purge)
-   406kb InternClosureQuery (purge)
-   403kb ParseMacroExpansionQuery
-   396kb InternStructQuery
-   389kb CallableItemSignatureQuery
-   377kb TraitDatumQuery (purge)
-   359kb TraitSolveQueryQuery
+   404kb InternStructQuery
+   403kb InternClosureQuery (purge)
+   334kb StructDataQuery (purge)
    329kb GenericDefaultsQuery (deps)
-   314kb MacroDefQuery (purge)
-   301kb StructDataQuery (purge)
-   273kb TraitDatumQuery
-   272kb ImplTraitQuery
-   272kb TraitDatumQuery (deps)
-   268kb StructDatumQuery (deps)
-   235kb TraitImplsInCrateQuery (deps)
-   225kb FieldTypesQuery
+   288kb StructDatumQuery (deps)
+   275kb ImplTraitQuery
+   274kb TraitImplsInCrateQuery (deps)
+   247kb TraitDatumQuery
+   225kb MacroDefQuery (purge)
+   221kb FieldTypesQuery
    212kb GenericPredicatesForParamQuery (purge)
-   170kb TypeAliasDataQuery (deps)
-   147kb FieldTypesQuery (deps)
+   184kb TraitSolveQueryQuery
+   178kb TypeAliasDataQuery (deps)
    144kb GenericDefaultsQuery
-   143kb ParseQuery (deps)
-   137kb StructDataQuery (deps)
-   120kb InternTypeParamIdQuery (purge)
-   119kb CrateDefMapQueryQuery (purge)
-   110kb LangItemQuery (purge)
+   144kb GenericPredicatesForParamQuery
+   144kb InternTypeParamIdQuery (purge)
+   143kb TraitDatumQuery (deps)
+   139kb FieldTypesQuery (deps)
+   133kb StructDataQuery (deps)
+   126kb LangItemQuery (purge)
+   115kb CrateDefMapQueryQuery (purge)
+   110kb EnumDataQuery (purge)
    109kb InternEnumQuery
+   108kb ParseQuery (deps)
    108kb ConstDataQuery (purge)
-    95kb MacroDefQuery (deps)
-    93kb GenericPredicatesForParamQuery
-    84kb EnumDataQuery (purge)
+    92kb GenericPredicatesForParamQuery (deps)
     80kb InternEnumQuery (purge)
-    75kb GenericPredicatesForParamQuery (deps)
-    69kb ConstDataQuery
+    64kb ConstDataQuery
     64kb CrateLangItemsQuery (deps)
-    60kb InternTraitQuery
+    62kb InternTraitQuery
+    60kb FnDefDatumQuery (purge)
     56kb InherentImplsInCrateQuery (deps)
-    56kb FnDefDatumQuery (purge)
+    47kb InherentImplsInCrateQuery
+    46kb MacroDefQuery (deps)
     44kb TraitDataQuery (purge)
+    41kb EnumDataQuery (deps)
     40kb InternTraitQuery (purge)
-    39kb EnumDataQuery (deps)
+    38kb FnDefDatumQuery
     37kb TraitDataQuery
+    32kb AssociatedTyDataQuery
     31kb InternStaticQuery
-    30kb InherentImplsInCrateQuery
-    28kb FnDefDatumQuery
+    28kb TraitImplsInDepsQuery (deps)
     28kb ConstDataQuery (deps)
+    28kb LangItemQuery (deps)
     28kb ImplSelfTyQuery
-    24kb AssociatedTyDataQuery (purge)
+    27kb LineIndexQuery
     24kb FnDefDatumQuery (deps)
-    21kb AssociatedTyDataQuery
-    20kb ReturnTypeImplTraitsQuery
-    18kb LangItemQuery (deps)
+    20kb AssociatedTyDataQuery (purge)
+    19kb ReturnTypeImplTraitsQuery (deps)
     16kb TraitImplsInCrateQuery (purge)
-    16kb ReturnTypeImplTraitsQuery (purge)
-    12kb TraitImplsInDepsQuery (deps)
-    10kb StaticDataQuery
+    16kb ReturnTypeImplTraitsQuery
+    13kb StaticDataQuery
+    12kb CrateLangItemsQuery (purge)
+    12kb ReturnTypeImplTraitsQuery (purge)
      8kb MacroExpandQuery
      8kb InherentImplsInCrateQuery (purge)
      8kb InternImplTraitIdQuery (purge)
-     4kb AssociatedTyDataQuery (deps)
    4096b StaticDataQuery (purge)
-   4096b LocalRootsQuery (purge)
+   4096b LineIndexQuery (purge)
    3200b StaticDataQuery (deps)
+    896b AssociatedTyDataQuery (deps)
+     80b TraitDataQuery (deps)
       0b CrateGraphQuery
       0b CrateGraphQuery (deps)
       0b FileTextQuery
@@ -24432,9 +24454,7 @@ Total:               98.79s, 190ginstr, 855mb
       0b UnionDataQuery
       0b UnionDataQuery (deps)
       0b UnionDataQuery (purge)
-      0b TraitDataQuery (deps)
       0b CrateLangItemsQuery
-      0b CrateLangItemsQuery (purge)
       0b LangItemQuery
       0b ImportMapQuery
       0b ImportMapQuery (deps)
@@ -24444,7 +24464,6 @@ Total:               98.79s, 190ginstr, 855mb
       0b AssociatedTyDataQuery
       0b AssociatedTyDataQuery (deps)
       0b AssociatedTyDataQuery (purge)
-      0b ReturnTypeImplTraitsQuery (deps)
       0b InternCallableDefQuery
       0b InternCallableDefQuery (deps)
       0b InternTypeParamIdQuery
@@ -24461,12 +24480,11 @@ Total:               98.79s, 190ginstr, 855mb
       0b LibrarySymbolsQuery (purge)
       0b LocalRootsQuery
       0b LocalRootsQuery (deps)
+      0b LocalRootsQuery (purge)
       0b LibraryRootsQuery
       0b LibraryRootsQuery (deps)
       0b LibraryRootsQuery (purge)
-      0b LineIndexQuery
       0b LineIndexQuery (deps)
-      0b LineIndexQuery (purge)
       0b InternMacroQuery (deps)
       0b InternFunctionQuery (deps)
       0b InternStructQuery (deps)
@@ -24484,5 +24502,5 @@ Total:               98.79s, 190ginstr, 855mb
       0b InternTypeParamIdQuery (deps)
       0b InternTypeParamIdQuery (purge)
     38mb VFS
-    72mb Unaccounted
-  3234kb Remaining
+    74mb Unaccounted
+  3151kb Remaining

@flodiebold
Copy link
Member

flodiebold commented Aug 8, 2021

Hmm, that looks like a method resolution issue. 🤔 Maybe related to inference variables not being known to be sized somehow? It looks like the case in your screenshot could be turned into a regression test.

Edit: Oh, last is a method on [T], so this is probably autoderef failing, probably because a Sized bound on the impl can't be proved, probably because of the inference variable.

@flodiebold
Copy link
Member

flodiebold commented Aug 8, 2021

Yeah, this is a failing test:

#[test]
fn vec_last_sized() {
    check_types(
        r#"
//- minicore: deref, option
struct Vec<T>;
impl<T> core::ops::Deref for Vec<T> {
    type Target = [T];
    fn deref(&self) -> &Self::Target { loop {} }
}
impl<T> Vec<T> {
    fn new() -> Vec<T> { loop {} }
    fn push(&mut self, t: T) {}
}
#[lang = "slice"]
impl<T> [T] {
    pub const fn last(&self) -> Option<&T> { loop {} }
}
fn test() {
    let v = Vec::new();
    v.last();
  //^^^^^^^^ Option<&usize>
    v.push(0usize);
}
        "#,
    )
}

I'm kind of wondering how rustc deals with this 🤔

Edit: Oh, but this should still work with the deref goal being ambiguous at first, the problem is that we only do autoderef when the result is unique...

@flodiebold
Copy link
Member

Using the Guidance when we get Solution::Ambig(Guidance::Definite()) in autoderef.rs fixes the test.

This enables autoderefing types with inference variables inside.
@lnicola
Copy link
Member

lnicola commented Aug 9, 2021

Do the statistics look better now?

@iDawer
Copy link
Contributor Author

iDawer commented Aug 9, 2021

Fixing autoderef removed couple of unknown types (sadly).
I've looked at the remainings. A lot of them coming form macros. Those that not from macro are sort of this:

mod c {
    //+/home/dawer/source/rust-analyzer/crates/ide/src/inlay_hints.rs 192:31-192:49: Unknown type
    #[derive(Clone)]
    struct IdentPat;
    #[derive(Clone)]
    struct Pat;
    impl From<IdentPat> for Pat {
        fn from(_: IdentPat) -> Pat {
            Pat
        }
    }
    fn type_of_pat(_: &Pat) {}
    fn test() {
        let pat = IdentPat;
        let x = pat.clone();
        let y = x.into();
        type_of_pat(&y);
    }

    mod minimized {
        fn test() {
            let x = ();
            let y = x.into();
            //      ^^^^^^^^ ()
            let _: &() = &y;
        }
    }
}

mod d {
    // +/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 112:14-125:18: Unknown type
    // +/home/dawer/source/rust-analyzer/crates/ide_db/src/symbol_index.rs 126:13-126:16: Unknown type
    fn test() {
        let x = core::iter::empty().collect();
        //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Vec<()>
        let _: &Vec<()> = &x;
    }
}

mod e {
    //+/home/dawer/source/rust-analyzer/crates/ide_completion/src/patterns.rs 364:24-364:88: Unknown type
    trait AstNode {}
    struct NameLike;
    impl AstNode for NameLike {}
    fn find<N: AstNode>() -> Option<N> {
        unimplemented!()
    }
    fn test() {
        let node = find();
        let y = node.unwrap();
        //      ^^^^^^^^^^^^^ NameLike
        let _: &NameLike = &y;
    }
}

Will look into it tomorrow

@iDawer
Copy link
Contributor Author

iDawer commented Aug 11, 2021

Reverting 72002b4 internal: allow ambiguous unsize coercion brings stats back.

exprs: 319608, ??ty: 398 (0%), ?ty: 437 (0%), !ty: 166

I'm wondering what way to take now:

@flodiebold
Copy link
Member

flodiebold commented Aug 11, 2021

One thing we could try would be to only allow ambiguous results where there is Guidance::Definite.

Apart from that, it may require changes in Chalk 😕 rustc does something very specific for coercion where it just solves CoerceUnsized and Unsize subgoals and leaves anything else alone, and has some special handling for type variables. We can't do that with Chalk right now, and I would guess that the Chalk team would be unhappy about having such specific logic in there, but maybe Niko has some idea how to do it in an elegant way. (Maybe there could be a special goal in the environment that changes the behavior 🤔 ) It might help to note the exact trait goals we're trying to solve in each of the cases where it should work or not work.

I would probably merge the version that breaks fewer currently-working things and look into solving this separately; there's no use in letting the rest of this PR bitrot.

@flodiebold
Copy link
Member

Only allowing Solution::Ambig(Guidance::Definite(_)) does make the examples work, I think; at least the one I turned into a test, but the others look very similar.

@iDawer
Copy link
Contributor Author

iDawer commented Aug 12, 2021

One thing we could try would be to only allow ambiguous results where there is Guidance::Definite.

Yeah I missed that. Thank you!

A lot of the remaining (like Expected &dyn HirDatabase, got &DB) still remain though. Chalk queries for those return Ambiguous(Unknown), I couldn't reproduce the issues in isolation and chalk logs say it is related to salsa macro. Something I think related to goal: Implemented(!0_0: salsa::Database) that reports ambiguity.

@iDawer iDawer marked this pull request as ready for review August 12, 2021 13:01
@flodiebold
Copy link
Member

A lot of the remaining (like Expected &dyn HirDatabase, got &DB) still remain though. Chalk queries for those return Ambiguous(Unknown), I couldn't reproduce the issues in isolation and chalk logs say it is related to salsa macro. Something I think related to goal: Implemented(!0_0: salsa::Database) that reports ambiguity.

Hm! That sounds like it might be a separate problem then.

Copy link
Member

@flodiebold flodiebold left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bors d+

@@ -746,16 +746,18 @@ fn bar(worble: ()) ${0:-> ()} {
fn add_function_with_impl_trait_arg() {
check_assist(
generate_function,
r"
r#"
#[lang = "sized"] trait Sized {}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need this here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would generate

fn bar(foo: impl Foo + ?Sized) ${0:-> ()} {
    todo!()
}

otherwise.

I didn't handle missing Sized lang item specially when printing sources, I though it is unlikely.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok, makes sense.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess minicore isn't wired up in the assist tests?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess minicore isn't wired up in the assist tests?

Ha, it is!

@bors
Copy link
Contributor

bors bot commented Aug 12, 2021

✌️ iDawer can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@iDawer
Copy link
Contributor Author

iDawer commented Aug 12, 2021

bors r+

@bors
Copy link
Contributor

bors bot commented Aug 12, 2021

@bors bors bot merged commit baf1494 into rust-lang:master Aug 12, 2021
@lnicola
Copy link
Member

lnicola commented Aug 22, 2021

Heads-up: this increased the memory usage on self from 880 to 917 MB.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Handle implicit Sized bounds
4 participants