diff options
author | Aleksey Kladov <[email protected]> | 2019-09-08 07:48:45 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-09-09 10:32:16 +0100 |
commit | ef2b84ddf119c950272c5f1eb321f3f9e90bedd4 (patch) | |
tree | d746c95cef14b27f67f1e5fd32d289e6d20b4d57 /crates/ra_lsp_server | |
parent | 734a43e95afc97773c234956a95b78caed88f2a3 (diff) |
introduce hir debugging infra
This is to make debugging rust-analyzer easier.
The idea is that `dbg!(krate.debug(db))` will print the actual, fuzzy
crate name, instead of precise ID. Debug printing infra is a separate
thing, to make sure that the actual hir doesn't have access to global
information.
Do not use `.debug` for `log::` logging: debugging executes queries,
and might introduce unneded dependencies to the crate graph
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/Cargo.toml | 1 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/world.rs | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_lsp_server/Cargo.toml b/crates/ra_lsp_server/Cargo.toml index 46a0f958c..677d81835 100644 --- a/crates/ra_lsp_server/Cargo.toml +++ b/crates/ra_lsp_server/Cargo.toml | |||
@@ -18,6 +18,7 @@ parking_lot = "0.9.0" | |||
18 | jod-thread = "0.1.0" | 18 | jod-thread = "0.1.0" |
19 | ra_vfs = "0.4.0" | 19 | ra_vfs = "0.4.0" |
20 | ra_syntax = { path = "../ra_syntax" } | 20 | ra_syntax = { path = "../ra_syntax" } |
21 | ra_db = { path = "../ra_db" } | ||
21 | ra_text_edit = { path = "../ra_text_edit" } | 22 | ra_text_edit = { path = "../ra_text_edit" } |
22 | ra_ide_api = { path = "../ra_ide_api" } | 23 | ra_ide_api = { path = "../ra_ide_api" } |
23 | lsp-server = "0.2.0" | 24 | lsp-server = "0.2.0" |
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs index 086ecd587..232409c3b 100644 --- a/crates/ra_lsp_server/src/world.rs +++ b/crates/ra_lsp_server/src/world.rs | |||
@@ -92,6 +92,7 @@ impl WorldState { | |||
92 | let vfs_root_path = vfs.root2path(r); | 92 | let vfs_root_path = vfs.root2path(r); |
93 | let is_local = folder_roots.iter().any(|it| vfs_root_path.starts_with(it)); | 93 | let is_local = folder_roots.iter().any(|it| vfs_root_path.starts_with(it)); |
94 | change.add_root(SourceRootId(r.0), is_local); | 94 | change.add_root(SourceRootId(r.0), is_local); |
95 | change.set_debug_root_path(SourceRootId(r.0), vfs_root_path.display().to_string()); | ||
95 | } | 96 | } |
96 | 97 | ||
97 | // Create crate graph from all the workspaces | 98 | // Create crate graph from all the workspaces |
@@ -101,7 +102,11 @@ impl WorldState { | |||
101 | vfs_file.map(|f| FileId(f.0)) | 102 | vfs_file.map(|f| FileId(f.0)) |
102 | }; | 103 | }; |
103 | for ws in workspaces.iter() { | 104 | for ws in workspaces.iter() { |
104 | crate_graph.extend(ws.to_crate_graph(&mut load)); | 105 | let (graph, crate_names) = ws.to_crate_graph(&mut load); |
106 | let shift = crate_graph.extend(graph); | ||
107 | for (crate_id, name) in crate_names { | ||
108 | change.set_debug_crate_name(crate_id.shift(shift), name) | ||
109 | } | ||
105 | } | 110 | } |
106 | change.set_crate_graph(crate_graph); | 111 | change.set_crate_graph(crate_graph); |
107 | 112 | ||