aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/rust-analyzer/src/global_state.rs38
-rw-r--r--crates/rust-analyzer/src/handlers.rs (renamed from crates/rust-analyzer/src/main_loop/handlers.rs)75
-rw-r--r--crates/rust-analyzer/src/lib.rs12
-rw-r--r--crates/rust-analyzer/src/main_loop.rs10
-rw-r--r--crates/rust-analyzer/src/request_metrics.rs (renamed from crates/rust-analyzer/src/main_loop/request_metrics.rs)0
5 files changed, 68 insertions, 67 deletions
diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs
index e7eeb60ee..9a75cb2ab 100644
--- a/crates/rust-analyzer/src/global_state.rs
+++ b/crates/rust-analyzer/src/global_state.rs
@@ -20,7 +20,7 @@ use crate::{
20 diagnostics::{CheckFixes, DiagnosticCollection}, 20 diagnostics::{CheckFixes, DiagnosticCollection},
21 from_proto, 21 from_proto,
22 line_endings::LineEndings, 22 line_endings::LineEndings,
23 main_loop::request_metrics::{LatestRequests, RequestMetrics}, 23 request_metrics::{LatestRequests, RequestMetrics},
24 to_proto::url_from_abs_path, 24 to_proto::url_from_abs_path,
25 Result, 25 Result,
26}; 26};
@@ -46,32 +46,32 @@ fn create_flycheck(workspaces: &[ProjectWorkspace], config: &FlycheckConfig) ->
46/// snapshot of the file systems, and `analysis_host`, which stores our 46/// snapshot of the file systems, and `analysis_host`, which stores our
47/// incremental salsa database. 47/// incremental salsa database.
48#[derive(Debug)] 48#[derive(Debug)]
49pub struct GlobalState { 49pub(crate) struct GlobalState {
50 pub config: Config, 50 pub(crate) config: Config,
51 pub workspaces: Arc<Vec<ProjectWorkspace>>, 51 pub(crate) workspaces: Arc<Vec<ProjectWorkspace>>,
52 pub analysis_host: AnalysisHost, 52 pub(crate) analysis_host: AnalysisHost,
53 pub loader: Box<dyn vfs::loader::Handle>, 53 pub(crate) loader: Box<dyn vfs::loader::Handle>,
54 pub task_receiver: Receiver<vfs::loader::Message>, 54 pub(crate) task_receiver: Receiver<vfs::loader::Message>,
55 pub flycheck: Option<Flycheck>, 55 pub(crate) flycheck: Option<Flycheck>,
56 pub diagnostics: DiagnosticCollection, 56 pub(crate) diagnostics: DiagnosticCollection,
57 pub proc_macro_client: ProcMacroClient, 57 pub(crate) proc_macro_client: ProcMacroClient,
58 pub(crate) vfs: Arc<RwLock<(vfs::Vfs, FxHashMap<FileId, LineEndings>)>>, 58 pub(crate) vfs: Arc<RwLock<(vfs::Vfs, FxHashMap<FileId, LineEndings>)>>,
59 pub(crate) latest_requests: Arc<RwLock<LatestRequests>>, 59 pub(crate) latest_requests: Arc<RwLock<LatestRequests>>,
60 source_root_config: SourceRootConfig, 60 source_root_config: SourceRootConfig,
61} 61}
62 62
63/// An immutable snapshot of the world's state at a point in time. 63/// An immutable snapshot of the world's state at a point in time.
64pub struct GlobalStateSnapshot { 64pub(crate) struct GlobalStateSnapshot {
65 pub config: Config, 65 pub(crate) config: Config,
66 pub workspaces: Arc<Vec<ProjectWorkspace>>, 66 pub(crate) workspaces: Arc<Vec<ProjectWorkspace>>,
67 pub analysis: Analysis, 67 pub(crate) analysis: Analysis,
68 pub check_fixes: CheckFixes, 68 pub(crate) check_fixes: CheckFixes,
69 pub(crate) latest_requests: Arc<RwLock<LatestRequests>>, 69 pub(crate) latest_requests: Arc<RwLock<LatestRequests>>,
70 vfs: Arc<RwLock<(vfs::Vfs, FxHashMap<FileId, LineEndings>)>>, 70 vfs: Arc<RwLock<(vfs::Vfs, FxHashMap<FileId, LineEndings>)>>,
71} 71}
72 72
73impl GlobalState { 73impl GlobalState {
74 pub fn new( 74 pub(crate) fn new(
75 workspaces: Vec<ProjectWorkspace>, 75 workspaces: Vec<ProjectWorkspace>,
76 lru_capacity: Option<usize>, 76 lru_capacity: Option<usize>,
77 config: Config, 77 config: Config,
@@ -241,7 +241,7 @@ impl GlobalStateSnapshot {
241 self.vfs.read().1[&id] 241 self.vfs.read().1[&id]
242 } 242 }
243 243
244 pub fn anchored_path(&self, file_id: FileId, path: &str) -> Url { 244 pub(crate) fn anchored_path(&self, file_id: FileId, path: &str) -> Url {
245 let mut base = self.vfs.read().0.file_path(file_id); 245 let mut base = self.vfs.read().0.file_path(file_id);
246 base.pop(); 246 base.pop();
247 let path = base.join(path); 247 let path = base.join(path);
@@ -264,7 +264,7 @@ impl GlobalStateSnapshot {
264 }) 264 })
265 } 265 }
266 266
267 pub fn status(&self) -> String { 267 pub(crate) fn status(&self) -> String {
268 let mut buf = String::new(); 268 let mut buf = String::new();
269 if self.workspaces.is_empty() { 269 if self.workspaces.is_empty() {
270 buf.push_str("no workspaces\n") 270 buf.push_str("no workspaces\n")
@@ -349,7 +349,7 @@ pub(crate) struct SourceRootConfig {
349} 349}
350 350
351impl SourceRootConfig { 351impl SourceRootConfig {
352 pub fn partition(&self, vfs: &vfs::Vfs) -> Vec<SourceRoot> { 352 pub(crate) fn partition(&self, vfs: &vfs::Vfs) -> Vec<SourceRoot> {
353 self.fsc 353 self.fsc
354 .partition(vfs) 354 .partition(vfs)
355 .into_iter() 355 .into_iter()
diff --git a/crates/rust-analyzer/src/main_loop/handlers.rs b/crates/rust-analyzer/src/handlers.rs
index a1e2432cf..b38755b79 100644
--- a/crates/rust-analyzer/src/main_loop/handlers.rs
+++ b/crates/rust-analyzer/src/handlers.rs
@@ -38,7 +38,7 @@ use crate::{
38 to_proto, LspError, Result, 38 to_proto, LspError, Result,
39}; 39};
40 40
41pub fn handle_analyzer_status(snap: GlobalStateSnapshot, _: ()) -> Result<String> { 41pub(crate) fn handle_analyzer_status(snap: GlobalStateSnapshot, _: ()) -> Result<String> {
42 let _p = profile("handle_analyzer_status"); 42 let _p = profile("handle_analyzer_status");
43 let mut buf = snap.status(); 43 let mut buf = snap.status();
44 format_to!(buf, "\n\nrequests:\n"); 44 format_to!(buf, "\n\nrequests:\n");
@@ -50,7 +50,7 @@ pub fn handle_analyzer_status(snap: GlobalStateSnapshot, _: ()) -> Result<String
50 Ok(buf) 50 Ok(buf)
51} 51}
52 52
53pub fn handle_syntax_tree( 53pub(crate) fn handle_syntax_tree(
54 snap: GlobalStateSnapshot, 54 snap: GlobalStateSnapshot,
55 params: lsp_ext::SyntaxTreeParams, 55 params: lsp_ext::SyntaxTreeParams,
56) -> Result<String> { 56) -> Result<String> {
@@ -62,7 +62,7 @@ pub fn handle_syntax_tree(
62 Ok(res) 62 Ok(res)
63} 63}
64 64
65pub fn handle_expand_macro( 65pub(crate) fn handle_expand_macro(
66 snap: GlobalStateSnapshot, 66 snap: GlobalStateSnapshot,
67 params: lsp_ext::ExpandMacroParams, 67 params: lsp_ext::ExpandMacroParams,
68) -> Result<Option<lsp_ext::ExpandedMacro>> { 68) -> Result<Option<lsp_ext::ExpandedMacro>> {
@@ -75,7 +75,7 @@ pub fn handle_expand_macro(
75 Ok(res.map(|it| lsp_ext::ExpandedMacro { name: it.name, expansion: it.expansion })) 75 Ok(res.map(|it| lsp_ext::ExpandedMacro { name: it.name, expansion: it.expansion }))
76} 76}
77 77
78pub fn handle_selection_range( 78pub(crate) fn handle_selection_range(
79 snap: GlobalStateSnapshot, 79 snap: GlobalStateSnapshot,
80 params: lsp_types::SelectionRangeParams, 80 params: lsp_types::SelectionRangeParams,
81) -> Result<Option<Vec<lsp_types::SelectionRange>>> { 81) -> Result<Option<Vec<lsp_types::SelectionRange>>> {
@@ -118,7 +118,7 @@ pub fn handle_selection_range(
118 Ok(Some(res?)) 118 Ok(Some(res?))
119} 119}
120 120
121pub fn handle_matching_brace( 121pub(crate) fn handle_matching_brace(
122 snap: GlobalStateSnapshot, 122 snap: GlobalStateSnapshot,
123 params: lsp_ext::MatchingBraceParams, 123 params: lsp_ext::MatchingBraceParams,
124) -> Result<Vec<Position>> { 124) -> Result<Vec<Position>> {
@@ -140,7 +140,7 @@ pub fn handle_matching_brace(
140 Ok(res) 140 Ok(res)
141} 141}
142 142
143pub fn handle_join_lines( 143pub(crate) fn handle_join_lines(
144 snap: GlobalStateSnapshot, 144 snap: GlobalStateSnapshot,
145 params: lsp_ext::JoinLinesParams, 145 params: lsp_ext::JoinLinesParams,
146) -> Result<Vec<lsp_types::TextEdit>> { 146) -> Result<Vec<lsp_types::TextEdit>> {
@@ -163,7 +163,7 @@ pub fn handle_join_lines(
163 Ok(res) 163 Ok(res)
164} 164}
165 165
166pub fn handle_on_enter( 166pub(crate) fn handle_on_enter(
167 snap: GlobalStateSnapshot, 167 snap: GlobalStateSnapshot,
168 params: lsp_types::TextDocumentPositionParams, 168 params: lsp_types::TextDocumentPositionParams,
169) -> Result<Option<Vec<lsp_ext::SnippetTextEdit>>> { 169) -> Result<Option<Vec<lsp_ext::SnippetTextEdit>>> {
@@ -180,7 +180,7 @@ pub fn handle_on_enter(
180} 180}
181 181
182// Don't forget to add new trigger characters to `ServerCapabilities` in `caps.rs`. 182// Don't forget to add new trigger characters to `ServerCapabilities` in `caps.rs`.
183pub fn handle_on_type_formatting( 183pub(crate) fn handle_on_type_formatting(
184 snap: GlobalStateSnapshot, 184 snap: GlobalStateSnapshot,
185 params: lsp_types::DocumentOnTypeFormattingParams, 185 params: lsp_types::DocumentOnTypeFormattingParams,
186) -> Result<Option<Vec<lsp_types::TextEdit>>> { 186) -> Result<Option<Vec<lsp_types::TextEdit>>> {
@@ -219,7 +219,7 @@ pub fn handle_on_type_formatting(
219 Ok(Some(change)) 219 Ok(Some(change))
220} 220}
221 221
222pub fn handle_document_symbol( 222pub(crate) fn handle_document_symbol(
223 snap: GlobalStateSnapshot, 223 snap: GlobalStateSnapshot,
224 params: lsp_types::DocumentSymbolParams, 224 params: lsp_types::DocumentSymbolParams,
225) -> Result<Option<lsp_types::DocumentSymbolResponse>> { 225) -> Result<Option<lsp_types::DocumentSymbolResponse>> {
@@ -287,7 +287,7 @@ pub fn handle_document_symbol(
287 } 287 }
288} 288}
289 289
290pub fn handle_workspace_symbol( 290pub(crate) fn handle_workspace_symbol(
291 snap: GlobalStateSnapshot, 291 snap: GlobalStateSnapshot,
292 params: lsp_types::WorkspaceSymbolParams, 292 params: lsp_types::WorkspaceSymbolParams,
293) -> Result<Option<Vec<SymbolInformation>>> { 293) -> Result<Option<Vec<SymbolInformation>>> {
@@ -331,7 +331,7 @@ pub fn handle_workspace_symbol(
331 } 331 }
332} 332}
333 333
334pub fn handle_goto_definition( 334pub(crate) fn handle_goto_definition(
335 snap: GlobalStateSnapshot, 335 snap: GlobalStateSnapshot,
336 params: lsp_types::GotoDefinitionParams, 336 params: lsp_types::GotoDefinitionParams,
337) -> Result<Option<lsp_types::GotoDefinitionResponse>> { 337) -> Result<Option<lsp_types::GotoDefinitionResponse>> {
@@ -346,7 +346,7 @@ pub fn handle_goto_definition(
346 Ok(Some(res)) 346 Ok(Some(res))
347} 347}
348 348
349pub fn handle_goto_implementation( 349pub(crate) fn handle_goto_implementation(
350 snap: GlobalStateSnapshot, 350 snap: GlobalStateSnapshot,
351 params: lsp_types::request::GotoImplementationParams, 351 params: lsp_types::request::GotoImplementationParams,
352) -> Result<Option<lsp_types::request::GotoImplementationResponse>> { 352) -> Result<Option<lsp_types::request::GotoImplementationResponse>> {
@@ -361,7 +361,7 @@ pub fn handle_goto_implementation(
361 Ok(Some(res)) 361 Ok(Some(res))
362} 362}
363 363
364pub fn handle_goto_type_definition( 364pub(crate) fn handle_goto_type_definition(
365 snap: GlobalStateSnapshot, 365 snap: GlobalStateSnapshot,
366 params: lsp_types::request::GotoTypeDefinitionParams, 366 params: lsp_types::request::GotoTypeDefinitionParams,
367) -> Result<Option<lsp_types::request::GotoTypeDefinitionResponse>> { 367) -> Result<Option<lsp_types::request::GotoTypeDefinitionResponse>> {
@@ -376,7 +376,7 @@ pub fn handle_goto_type_definition(
376 Ok(Some(res)) 376 Ok(Some(res))
377} 377}
378 378
379pub fn handle_parent_module( 379pub(crate) fn handle_parent_module(
380 snap: GlobalStateSnapshot, 380 snap: GlobalStateSnapshot,
381 params: lsp_types::TextDocumentPositionParams, 381 params: lsp_types::TextDocumentPositionParams,
382) -> Result<Option<lsp_types::GotoDefinitionResponse>> { 382) -> Result<Option<lsp_types::GotoDefinitionResponse>> {
@@ -387,7 +387,7 @@ pub fn handle_parent_module(
387 Ok(Some(res)) 387 Ok(Some(res))
388} 388}
389 389
390pub fn handle_runnables( 390pub(crate) fn handle_runnables(
391 snap: GlobalStateSnapshot, 391 snap: GlobalStateSnapshot,
392 params: lsp_ext::RunnablesParams, 392 params: lsp_ext::RunnablesParams,
393) -> Result<Vec<lsp_ext::Runnable>> { 393) -> Result<Vec<lsp_ext::Runnable>> {
@@ -446,7 +446,7 @@ pub fn handle_runnables(
446 Ok(res) 446 Ok(res)
447} 447}
448 448
449pub fn handle_completion( 449pub(crate) fn handle_completion(
450 snap: GlobalStateSnapshot, 450 snap: GlobalStateSnapshot,
451 params: lsp_types::CompletionParams, 451 params: lsp_types::CompletionParams,
452) -> Result<Option<lsp_types::CompletionResponse>> { 452) -> Result<Option<lsp_types::CompletionResponse>> {
@@ -488,7 +488,7 @@ pub fn handle_completion(
488 Ok(Some(items.into())) 488 Ok(Some(items.into()))
489} 489}
490 490
491pub fn handle_folding_range( 491pub(crate) fn handle_folding_range(
492 snap: GlobalStateSnapshot, 492 snap: GlobalStateSnapshot,
493 params: FoldingRangeParams, 493 params: FoldingRangeParams,
494) -> Result<Option<Vec<FoldingRange>>> { 494) -> Result<Option<Vec<FoldingRange>>> {
@@ -505,7 +505,7 @@ pub fn handle_folding_range(
505 Ok(Some(res)) 505 Ok(Some(res))
506} 506}
507 507
508pub fn handle_signature_help( 508pub(crate) fn handle_signature_help(
509 snap: GlobalStateSnapshot, 509 snap: GlobalStateSnapshot,
510 params: lsp_types::SignatureHelpParams, 510 params: lsp_types::SignatureHelpParams,
511) -> Result<Option<lsp_types::SignatureHelp>> { 511) -> Result<Option<lsp_types::SignatureHelp>> {
@@ -529,7 +529,7 @@ pub fn handle_signature_help(
529 })) 529 }))
530} 530}
531 531
532pub fn handle_hover( 532pub(crate) fn handle_hover(
533 snap: GlobalStateSnapshot, 533 snap: GlobalStateSnapshot,
534 params: lsp_types::HoverParams, 534 params: lsp_types::HoverParams,
535) -> Result<Option<lsp_ext::Hover>> { 535) -> Result<Option<lsp_ext::Hover>> {
@@ -555,7 +555,7 @@ pub fn handle_hover(
555 Ok(Some(hover)) 555 Ok(Some(hover))
556} 556}
557 557
558pub fn handle_prepare_rename( 558pub(crate) fn handle_prepare_rename(
559 snap: GlobalStateSnapshot, 559 snap: GlobalStateSnapshot,
560 params: lsp_types::TextDocumentPositionParams, 560 params: lsp_types::TextDocumentPositionParams,
561) -> Result<Option<PrepareRenameResponse>> { 561) -> Result<Option<PrepareRenameResponse>> {
@@ -573,7 +573,7 @@ pub fn handle_prepare_rename(
573 Ok(Some(PrepareRenameResponse::Range(range))) 573 Ok(Some(PrepareRenameResponse::Range(range)))
574} 574}
575 575
576pub fn handle_rename( 576pub(crate) fn handle_rename(
577 snap: GlobalStateSnapshot, 577 snap: GlobalStateSnapshot,
578 params: RenameParams, 578 params: RenameParams,
579) -> Result<Option<WorkspaceEdit>> { 579) -> Result<Option<WorkspaceEdit>> {
@@ -597,7 +597,7 @@ pub fn handle_rename(
597 Ok(Some(workspace_edit)) 597 Ok(Some(workspace_edit))
598} 598}
599 599
600pub fn handle_references( 600pub(crate) fn handle_references(
601 snap: GlobalStateSnapshot, 601 snap: GlobalStateSnapshot,
602 params: lsp_types::ReferenceParams, 602 params: lsp_types::ReferenceParams,
603) -> Result<Option<Vec<Location>>> { 603) -> Result<Option<Vec<Location>>> {
@@ -624,7 +624,7 @@ pub fn handle_references(
624 Ok(Some(locations)) 624 Ok(Some(locations))
625} 625}
626 626
627pub fn handle_formatting( 627pub(crate) fn handle_formatting(
628 snap: GlobalStateSnapshot, 628 snap: GlobalStateSnapshot,
629 params: DocumentFormattingParams, 629 params: DocumentFormattingParams,
630) -> Result<Option<Vec<lsp_types::TextEdit>>> { 630) -> Result<Option<Vec<lsp_types::TextEdit>>> {
@@ -739,7 +739,7 @@ fn handle_fixes(
739 Ok(()) 739 Ok(())
740} 740}
741 741
742pub fn handle_code_action( 742pub(crate) fn handle_code_action(
743 snap: GlobalStateSnapshot, 743 snap: GlobalStateSnapshot,
744 params: lsp_types::CodeActionParams, 744 params: lsp_types::CodeActionParams,
745) -> Result<Option<Vec<lsp_ext::CodeAction>>> { 745) -> Result<Option<Vec<lsp_ext::CodeAction>>> {
@@ -774,7 +774,7 @@ pub fn handle_code_action(
774 Ok(Some(res)) 774 Ok(Some(res))
775} 775}
776 776
777pub fn handle_resolve_code_action( 777pub(crate) fn handle_resolve_code_action(
778 snap: GlobalStateSnapshot, 778 snap: GlobalStateSnapshot,
779 params: lsp_ext::ResolveCodeActionParams, 779 params: lsp_ext::ResolveCodeActionParams,
780) -> Result<Option<lsp_ext::SnippetWorkspaceEdit>> { 780) -> Result<Option<lsp_ext::SnippetWorkspaceEdit>> {
@@ -792,7 +792,7 @@ pub fn handle_resolve_code_action(
792 Ok(to_proto::resolved_code_action(&snap, assist.clone())?.edit) 792 Ok(to_proto::resolved_code_action(&snap, assist.clone())?.edit)
793} 793}
794 794
795pub fn handle_code_lens( 795pub(crate) fn handle_code_lens(
796 snap: GlobalStateSnapshot, 796 snap: GlobalStateSnapshot,
797 params: lsp_types::CodeLensParams, 797 params: lsp_types::CodeLensParams,
798) -> Result<Option<Vec<CodeLens>>> { 798) -> Result<Option<Vec<CodeLens>>> {
@@ -873,7 +873,7 @@ enum CodeLensResolveData {
873 Impls(lsp_types::request::GotoImplementationParams), 873 Impls(lsp_types::request::GotoImplementationParams),
874} 874}
875 875
876pub fn handle_code_lens_resolve( 876pub(crate) fn handle_code_lens_resolve(
877 snap: GlobalStateSnapshot, 877 snap: GlobalStateSnapshot,
878 code_lens: CodeLens, 878 code_lens: CodeLens,
879) -> Result<CodeLens> { 879) -> Result<CodeLens> {
@@ -910,7 +910,7 @@ pub fn handle_code_lens_resolve(
910 } 910 }
911} 911}
912 912
913pub fn handle_document_highlight( 913pub(crate) fn handle_document_highlight(
914 snap: GlobalStateSnapshot, 914 snap: GlobalStateSnapshot,
915 params: lsp_types::DocumentHighlightParams, 915 params: lsp_types::DocumentHighlightParams,
916) -> Result<Option<Vec<DocumentHighlight>>> { 916) -> Result<Option<Vec<DocumentHighlight>>> {
@@ -937,7 +937,7 @@ pub fn handle_document_highlight(
937 Ok(Some(res)) 937 Ok(Some(res))
938} 938}
939 939
940pub fn handle_ssr( 940pub(crate) fn handle_ssr(
941 snap: GlobalStateSnapshot, 941 snap: GlobalStateSnapshot,
942 params: lsp_ext::SsrParams, 942 params: lsp_ext::SsrParams,
943) -> Result<lsp_types::WorkspaceEdit> { 943) -> Result<lsp_types::WorkspaceEdit> {
@@ -947,7 +947,10 @@ pub fn handle_ssr(
947 to_proto::workspace_edit(&snap, source_change) 947 to_proto::workspace_edit(&snap, source_change)
948} 948}
949 949
950pub fn publish_diagnostics(snap: &GlobalStateSnapshot, file_id: FileId) -> Result<DiagnosticTask> { 950pub(crate) fn publish_diagnostics(
951 snap: &GlobalStateSnapshot,
952 file_id: FileId,
953) -> Result<DiagnosticTask> {
951 let _p = profile("publish_diagnostics"); 954 let _p = profile("publish_diagnostics");
952 let line_index = snap.analysis().file_line_index(file_id)?; 955 let line_index = snap.analysis().file_line_index(file_id)?;
953 let diagnostics: Vec<Diagnostic> = snap 956 let diagnostics: Vec<Diagnostic> = snap
@@ -967,7 +970,7 @@ pub fn publish_diagnostics(snap: &GlobalStateSnapshot, file_id: FileId) -> Resul
967 Ok(DiagnosticTask::SetNative(file_id, diagnostics)) 970 Ok(DiagnosticTask::SetNative(file_id, diagnostics))
968} 971}
969 972
970pub fn handle_inlay_hints( 973pub(crate) fn handle_inlay_hints(
971 snap: GlobalStateSnapshot, 974 snap: GlobalStateSnapshot,
972 params: InlayHintsParams, 975 params: InlayHintsParams,
973) -> Result<Vec<InlayHint>> { 976) -> Result<Vec<InlayHint>> {
@@ -982,7 +985,7 @@ pub fn handle_inlay_hints(
982 .collect()) 985 .collect())
983} 986}
984 987
985pub fn handle_call_hierarchy_prepare( 988pub(crate) fn handle_call_hierarchy_prepare(
986 snap: GlobalStateSnapshot, 989 snap: GlobalStateSnapshot,
987 params: CallHierarchyPrepareParams, 990 params: CallHierarchyPrepareParams,
988) -> Result<Option<Vec<CallHierarchyItem>>> { 991) -> Result<Option<Vec<CallHierarchyItem>>> {
@@ -1004,7 +1007,7 @@ pub fn handle_call_hierarchy_prepare(
1004 Ok(Some(res)) 1007 Ok(Some(res))
1005} 1008}
1006 1009
1007pub fn handle_call_hierarchy_incoming( 1010pub(crate) fn handle_call_hierarchy_incoming(
1008 snap: GlobalStateSnapshot, 1011 snap: GlobalStateSnapshot,
1009 params: CallHierarchyIncomingCallsParams, 1012 params: CallHierarchyIncomingCallsParams,
1010) -> Result<Option<Vec<CallHierarchyIncomingCall>>> { 1013) -> Result<Option<Vec<CallHierarchyIncomingCall>>> {
@@ -1039,7 +1042,7 @@ pub fn handle_call_hierarchy_incoming(
1039 Ok(Some(res)) 1042 Ok(Some(res))
1040} 1043}
1041 1044
1042pub fn handle_call_hierarchy_outgoing( 1045pub(crate) fn handle_call_hierarchy_outgoing(
1043 snap: GlobalStateSnapshot, 1046 snap: GlobalStateSnapshot,
1044 params: CallHierarchyOutgoingCallsParams, 1047 params: CallHierarchyOutgoingCallsParams,
1045) -> Result<Option<Vec<CallHierarchyOutgoingCall>>> { 1048) -> Result<Option<Vec<CallHierarchyOutgoingCall>>> {
@@ -1074,7 +1077,7 @@ pub fn handle_call_hierarchy_outgoing(
1074 Ok(Some(res)) 1077 Ok(Some(res))
1075} 1078}
1076 1079
1077pub fn handle_semantic_tokens( 1080pub(crate) fn handle_semantic_tokens(
1078 snap: GlobalStateSnapshot, 1081 snap: GlobalStateSnapshot,
1079 params: SemanticTokensParams, 1082 params: SemanticTokensParams,
1080) -> Result<Option<SemanticTokensResult>> { 1083) -> Result<Option<SemanticTokensResult>> {
@@ -1089,7 +1092,7 @@ pub fn handle_semantic_tokens(
1089 Ok(Some(semantic_tokens.into())) 1092 Ok(Some(semantic_tokens.into()))
1090} 1093}
1091 1094
1092pub fn handle_semantic_tokens_range( 1095pub(crate) fn handle_semantic_tokens_range(
1093 snap: GlobalStateSnapshot, 1096 snap: GlobalStateSnapshot,
1094 params: SemanticTokensRangeParams, 1097 params: SemanticTokensRangeParams,
1095) -> Result<Option<SemanticTokensRangeResult>> { 1098) -> Result<Option<SemanticTokensRangeResult>> {
diff --git a/crates/rust-analyzer/src/lib.rs b/crates/rust-analyzer/src/lib.rs
index b38067079..9757a16a3 100644
--- a/crates/rust-analyzer/src/lib.rs
+++ b/crates/rust-analyzer/src/lib.rs
@@ -17,18 +17,20 @@ macro_rules! eprintln {
17 ($($tt:tt)*) => { stdx::eprintln!($($tt)*) }; 17 ($($tt:tt)*) => { stdx::eprintln!($($tt)*) };
18} 18}
19 19
20mod global_state;
21mod main_loop;
22mod handlers;
20mod caps; 23mod caps;
21mod cargo_target_spec; 24mod cargo_target_spec;
22mod to_proto; 25mod to_proto;
23mod from_proto; 26mod from_proto;
24mod main_loop; 27mod semantic_tokens;
25mod markdown; 28mod markdown;
26pub mod lsp_ext;
27pub mod config;
28mod global_state;
29mod diagnostics; 29mod diagnostics;
30mod semantic_tokens;
31mod line_endings; 30mod line_endings;
31mod request_metrics;
32pub mod lsp_ext;
33pub mod config;
32 34
33use serde::de::DeserializeOwned; 35use serde::de::DeserializeOwned;
34 36
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index b55d45cd3..c8819c3b0 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -1,9 +1,5 @@
1//! The main loop of `rust-analyzer` responsible for dispatching LSP 1//! The main loop of `rust-analyzer` responsible for dispatching LSP
2//! requests/replies and notifications back to the client. 2//! requests/replies and notifications back to the client.
3
4mod handlers;
5pub(crate) mod request_metrics;
6
7use std::{ 3use std::{
8 env, 4 env,
9 error::Error, 5 error::Error,
@@ -19,6 +15,7 @@ use lsp_server::{
19 Connection, ErrorCode, Message, Notification, ReqQueue, Request, RequestId, Response, 15 Connection, ErrorCode, Message, Notification, ReqQueue, Request, RequestId, Response,
20}; 16};
21use lsp_types::{request::Request as _, NumberOrString, TextDocumentContentChangeEvent}; 17use lsp_types::{request::Request as _, NumberOrString, TextDocumentContentChangeEvent};
18use ra_db::VfsPath;
22use ra_flycheck::CheckTask; 19use ra_flycheck::CheckTask;
23use ra_ide::{Canceled, FileId, LineIndex}; 20use ra_ide::{Canceled, FileId, LineIndex};
24use ra_prof::profile; 21use ra_prof::profile;
@@ -32,11 +29,10 @@ use crate::{
32 diagnostics::DiagnosticTask, 29 diagnostics::DiagnosticTask,
33 from_proto, 30 from_proto,
34 global_state::{file_id_to_url, GlobalState, GlobalStateSnapshot}, 31 global_state::{file_id_to_url, GlobalState, GlobalStateSnapshot},
35 lsp_ext, 32 handlers, lsp_ext,
36 main_loop::request_metrics::RequestMetrics, 33 request_metrics::RequestMetrics,
37 Result, 34 Result,
38}; 35};
39use ra_db::VfsPath;
40 36
41#[derive(Debug)] 37#[derive(Debug)]
42pub struct LspError { 38pub struct LspError {
diff --git a/crates/rust-analyzer/src/main_loop/request_metrics.rs b/crates/rust-analyzer/src/request_metrics.rs
index b1019e2d6..b1019e2d6 100644
--- a/crates/rust-analyzer/src/main_loop/request_metrics.rs
+++ b/crates/rust-analyzer/src/request_metrics.rs