aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2019-07-04 21:09:32 +0100
committerbors[bot] <26634292+bors[bot]@users.noreply.github.com>2019-07-04 21:09:32 +0100
commitcacdb0eab8131bfb945eb7ed0150c92ec56eefe2 (patch)
treef762de90ce813591bc640ae0bce36493a3dcafa9 /crates
parent4e8664d9d37021e85d72b6228fa45e7edf4a1a74 (diff)
parent1834bae5b86c54ed9dece26e82436919d59e6cb7 (diff)
Merge #1486
1486: allow rustfmt to reorder imports r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates')
-rw-r--r--crates/gen_lsp_server/examples/01_gen_lsp_server.rs6
-rw-r--r--crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs12
-rw-r--r--crates/ra_arena/src/lib.rs2
-rw-r--r--crates/ra_assists/src/add_derive.rs4
-rw-r--r--crates/ra_assists/src/add_explicit_type.rs11
-rw-r--r--crates/ra_assists/src/add_impl.rs4
-rw-r--r--crates/ra_assists/src/add_missing_impl_members.rs11
-rw-r--r--crates/ra_assists/src/assist_ctx.rs10
-rw-r--r--crates/ra_assists/src/ast_editor.rs10
-rw-r--r--crates/ra_assists/src/auto_import.rs17
-rw-r--r--crates/ra_assists/src/change_visibility.rs13
-rw-r--r--crates/ra_assists/src/fill_match_arms.rs9
-rw-r--r--crates/ra_assists/src/flip_binexpr.rs4
-rw-r--r--crates/ra_assists/src/flip_comma.rs8
-rw-r--r--crates/ra_assists/src/inline_local_variable.rs4
-rw-r--r--crates/ra_assists/src/introduce_variable.rs12
-rw-r--r--crates/ra_assists/src/lib.rs16
-rw-r--r--crates/ra_assists/src/move_guard.rs9
-rw-r--r--crates/ra_assists/src/remove_dbg.rs5
-rw-r--r--crates/ra_assists/src/replace_if_let_with_match.rs6
-rw-r--r--crates/ra_assists/src/split_import.rs8
-rw-r--r--crates/ra_batch/src/lib.rs12
-rw-r--r--crates/ra_batch/src/vfs_filter.rs4
-rw-r--r--crates/ra_cli/src/analysis_bench.rs6
-rw-r--r--crates/ra_cli/src/analysis_stats.rs4
-rw-r--r--crates/ra_cli/src/main.rs6
-rw-r--r--crates/ra_db/src/input.rs2
-rw-r--r--crates/ra_db/src/lib.rs10
-rw-r--r--crates/ra_fmt/src/lib.rs6
-rw-r--r--crates/ra_hir/src/adt.rs9
-rw-r--r--crates/ra_hir/src/code_model.rs30
-rw-r--r--crates/ra_hir/src/code_model/docs.rs4
-rw-r--r--crates/ra_hir/src/code_model/src.rs8
-rw-r--r--crates/ra_hir/src/db.rs28
-rw-r--r--crates/ra_hir/src/diagnostics.rs6
-rw-r--r--crates/ra_hir/src/expr.rs20
-rw-r--r--crates/ra_hir/src/expr/scope.rs13
-rw-r--r--crates/ra_hir/src/expr/validation.rs11
-rw-r--r--crates/ra_hir/src/generics.rs11
-rw-r--r--crates/ra_hir/src/ids.rs10
-rw-r--r--crates/ra_hir/src/impl_block.rs16
-rw-r--r--crates/ra_hir/src/lang_item.rs8
-rw-r--r--crates/ra_hir/src/lib.rs42
-rw-r--r--crates/ra_hir/src/mock.rs7
-rw-r--r--crates/ra_hir/src/nameres.rs32
-rw-r--r--crates/ra_hir/src/nameres/collector.rs25
-rw-r--r--crates/ra_hir/src/nameres/raw.rs15
-rw-r--r--crates/ra_hir/src/nameres/tests.rs6
-rw-r--r--crates/ra_hir/src/path.rs7
-rw-r--r--crates/ra_hir/src/resolve.rs13
-rw-r--r--crates/ra_hir/src/source_binder.rs18
-rw-r--r--crates/ra_hir/src/source_id.rs12
-rw-r--r--crates/ra_hir/src/traits.rs6
-rw-r--r--crates/ra_hir/src/ty.rs13
-rw-r--r--crates/ra_hir/src/ty/autoderef.rs4
-rw-r--r--crates/ra_hir/src/ty/infer.rs39
-rw-r--r--crates/ra_hir/src/ty/infer/unify.rs4
-rw-r--r--crates/ra_hir/src/ty/lower.rs21
-rw-r--r--crates/ra_hir/src/ty/method_resolution.rs12
-rw-r--r--crates/ra_hir/src/ty/op.rs4
-rw-r--r--crates/ra_hir/src/ty/tests.rs15
-rw-r--r--crates/ra_hir/src/ty/traits.rs12
-rw-r--r--crates/ra_hir/src/ty/traits/chalk.rs19
-rw-r--r--crates/ra_hir/src/type_alias.rs7
-rw-r--r--crates/ra_ide_api/src/assists.rs4
-rw-r--r--crates/ra_ide_api/src/call_info.rs8
-rw-r--r--crates/ra_ide_api/src/change.rs15
-rw-r--r--crates/ra_ide_api/src/completion.rs14
-rw-r--r--crates/ra_ide_api/src/completion/complete_dot.rs4
-rw-r--r--crates/ra_ide_api/src/completion/complete_fn_param.rs5
-rw-r--r--crates/ra_ide_api/src/completion/complete_keyword.rs9
-rw-r--r--crates/ra_ide_api/src/completion/complete_path.rs6
-rw-r--r--crates/ra_ide_api/src/completion/complete_pattern.rs2
-rw-r--r--crates/ra_ide_api/src/completion/complete_postfix.rs15
-rw-r--r--crates/ra_ide_api/src/completion/complete_scope.rs10
-rw-r--r--crates/ra_ide_api/src/completion/complete_snippet.rs7
-rw-r--r--crates/ra_ide_api/src/completion/complete_struct_literal.rs2
-rw-r--r--crates/ra_ide_api/src/completion/completion_context.rs10
-rw-r--r--crates/ra_ide_api/src/completion/completion_item.rs4
-rw-r--r--crates/ra_ide_api/src/completion/presentation.rs12
-rw-r--r--crates/ra_ide_api/src/db.rs12
-rw-r--r--crates/ra_ide_api/src/diagnostics.rs17
-rw-r--r--crates/ra_ide_api/src/display.rs11
-rw-r--r--crates/ra_ide_api/src/display/function_signature.rs7
-rw-r--r--crates/ra_ide_api/src/display/navigation_target.rs11
-rw-r--r--crates/ra_ide_api/src/display/short_label.rs4
-rw-r--r--crates/ra_ide_api/src/display/structure.rs2
-rw-r--r--crates/ra_ide_api/src/extend_selection.rs10
-rw-r--r--crates/ra_ide_api/src/folding_ranges.rs5
-rw-r--r--crates/ra_ide_api/src/goto_definition.rs9
-rw-r--r--crates/ra_ide_api/src/goto_type_definition.rs7
-rw-r--r--crates/ra_ide_api/src/hover.rs22
-rw-r--r--crates/ra_ide_api/src/impls.rs9
-rw-r--r--crates/ra_ide_api/src/join_lines.rs11
-rw-r--r--crates/ra_ide_api/src/lib.rs28
-rw-r--r--crates/ra_ide_api/src/line_index.rs2
-rw-r--r--crates/ra_ide_api/src/line_index_utils.rs6
-rw-r--r--crates/ra_ide_api/src/matching_brace.rs8
-rw-r--r--crates/ra_ide_api/src/mock_analysis.rs5
-rw-r--r--crates/ra_ide_api/src/name_ref_kind.rs2
-rw-r--r--crates/ra_ide_api/src/parent_module.rs8
-rw-r--r--crates/ra_ide_api/src/references.rs30
-rw-r--r--crates/ra_ide_api/src/runnables.rs6
-rw-r--r--crates/ra_ide_api/src/status.rs22
-rw-r--r--crates/ra_ide_api/src/symbol_index.rs36
-rw-r--r--crates/ra_ide_api/src/syntax_highlighting.rs14
-rw-r--r--crates/ra_ide_api/src/syntax_tree.rs8
-rw-r--r--crates/ra_ide_api/src/typing.rs11
-rw-r--r--crates/ra_lsp_server/src/caps.rs7
-rw-r--r--crates/ra_lsp_server/src/cargo_target_spec.rs2
-rw-r--r--crates/ra_lsp_server/src/conv.rs14
-rw-r--r--crates/ra_lsp_server/src/lib.rs5
-rw-r--r--crates/ra_lsp_server/src/main.rs4
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs9
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs21
-rw-r--r--crates/ra_lsp_server/src/project_model.rs2
-rw-r--r--crates/ra_lsp_server/src/req.rs11
-rw-r--r--crates/ra_lsp_server/src/vfs_filter.rs4
-rw-r--r--crates/ra_lsp_server/src/world.rs10
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/main.rs12
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/support.rs9
-rw-r--r--crates/ra_mbe/src/lib.rs10
-rw-r--r--crates/ra_mbe/src/mbe_expander.rs4
-rw-r--r--crates/ra_mbe/src/mbe_parser.rs2
-rw-r--r--crates/ra_mbe/src/subtree_parser.rs4
-rw-r--r--crates/ra_mbe/src/subtree_source.rs6
-rw-r--r--crates/ra_mbe/src/syntax_bridge.rs14
-rw-r--r--crates/ra_mbe/src/tt_cursor.rs4
-rw-r--r--crates/ra_parser/src/event.rs3
-rw-r--r--crates/ra_parser/src/grammar.rs2
-rw-r--r--crates/ra_parser/src/parser.rs6
-rw-r--r--crates/ra_prof/src/lib.rs15
-rw-r--r--crates/ra_project_model/src/cargo_workspace.rs6
-rw-r--r--crates/ra_project_model/src/lib.rs4
-rw-r--r--crates/ra_project_model/src/sysroot.rs2
-rw-r--r--crates/ra_syntax/src/algo.rs2
-rw-r--r--crates/ra_syntax/src/ast.rs8
-rw-r--r--crates/ra_syntax/src/ast/expr_extensions.rs6
-rw-r--r--crates/ra_syntax/src/ast/extensions.rs6
-rw-r--r--crates/ra_syntax/src/ast/tokens.rs6
-rw-r--r--crates/ra_syntax/src/ast/traits.rs4
-rw-r--r--crates/ra_syntax/src/fuzz.rs2
-rw-r--r--crates/ra_syntax/src/lib.rs19
-rw-r--r--crates/ra_syntax/src/parsing.rs7
-rw-r--r--crates/ra_syntax/src/parsing/lexer.rs3
-rw-r--r--crates/ra_syntax/src/parsing/lexer/numbers.rs5
-rw-r--r--crates/ra_syntax/src/parsing/reparsing.rs15
-rw-r--r--crates/ra_syntax/src/parsing/text_token_source.rs7
-rw-r--r--crates/ra_syntax/src/parsing/text_tree_sink.rs7
-rw-r--r--crates/ra_syntax/src/ptr.rs9
-rw-r--r--crates/ra_syntax/src/syntax_error.rs5
-rw-r--r--crates/ra_syntax/src/syntax_node.rs8
-rw-r--r--crates/ra_syntax/src/syntax_text.rs7
-rw-r--r--crates/ra_syntax/src/validation.rs7
-rw-r--r--crates/ra_syntax/src/validation/block.rs5
-rw-r--r--crates/ra_syntax/src/validation/field_expr.rs7
-rw-r--r--crates/ra_syntax/src/validation/unescape.rs2
-rw-r--r--crates/ra_syntax/tests/test.rs6
-rw-r--r--crates/ra_text_edit/src/test_utils.rs4
-rw-r--r--crates/ra_tools/src/bin/pre-commit.rs2
-rw-r--r--crates/ra_tools/src/lib.rs6
-rw-r--r--crates/ra_tools/src/main.rs6
-rw-r--r--crates/ra_tools/tests/cli.rs2
-rw-r--r--crates/ra_tt/src/buffer.rs2
-rw-r--r--crates/test_utils/src/lib.rs4
165 files changed, 772 insertions, 787 deletions
diff --git a/crates/gen_lsp_server/examples/01_gen_lsp_server.rs b/crates/gen_lsp_server/examples/01_gen_lsp_server.rs
index bc497f74a..f49965064 100644
--- a/crates/gen_lsp_server/examples/01_gen_lsp_server.rs
+++ b/crates/gen_lsp_server/examples/01_gen_lsp_server.rs
@@ -1,11 +1,11 @@
1use std::error::Error; 1use std::error::Error;
2 2
3use crossbeam_channel::{Sender, Receiver}; 3use crossbeam_channel::{Receiver, Sender};
4use gen_lsp_server::{handle_shutdown, run_server, stdio_transport, RawMessage, RawResponse};
4use lsp_types::{ 5use lsp_types::{
5 ServerCapabilities, InitializeParams,
6 request::{GotoDefinition, GotoDefinitionResponse}, 6 request::{GotoDefinition, GotoDefinitionResponse},
7 InitializeParams, ServerCapabilities,
7}; 8};
8use gen_lsp_server::{run_server, stdio_transport, handle_shutdown, RawMessage, RawResponse};
9 9
10fn main() -> Result<(), Box<dyn Error + Sync + Send>> { 10fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
11 let (receiver, sender, io_threads) = stdio_transport(); 11 let (receiver, sender, io_threads) = stdio_transport();
diff --git a/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs b/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs
index 1a6174462..3c48106c5 100644
--- a/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs
+++ b/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs
@@ -44,14 +44,14 @@
44 44
45use std::error::Error; 45use std::error::Error;
46 46
47use crossbeam_channel::{Sender, Receiver}; 47use crossbeam_channel::{Receiver, Sender};
48use lsp_types::{ 48use gen_lsp_server::{
49 ServerCapabilities, InitializeParams, 49 handle_shutdown, run_server, stdio_transport, RawMessage, RawRequest, RawResponse,
50 request::{GotoDefinition, GotoDefinitionResponse},
51}; 50};
52use log::info; 51use log::info;
53use gen_lsp_server::{ 52use lsp_types::{
54 run_server, stdio_transport, handle_shutdown, RawMessage, RawResponse, RawRequest, 53 request::{GotoDefinition, GotoDefinitionResponse},
54 InitializeParams, ServerCapabilities,
55}; 55};
56 56
57fn main() -> Result<(), Box<dyn Error + Sync + Send>> { 57fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
diff --git a/crates/ra_arena/src/lib.rs b/crates/ra_arena/src/lib.rs
index 26641e690..3b7cb77b1 100644
--- a/crates/ra_arena/src/lib.rs
+++ b/crates/ra_arena/src/lib.rs
@@ -2,9 +2,9 @@
2 2
3use std::{ 3use std::{
4 fmt, 4 fmt,
5 iter::FromIterator,
5 marker::PhantomData, 6 marker::PhantomData,
6 ops::{Index, IndexMut}, 7 ops::{Index, IndexMut},
7 iter::FromIterator,
8}; 8};
9 9
10pub mod map; 10pub mod map;
diff --git a/crates/ra_assists/src/add_derive.rs b/crates/ra_assists/src/add_derive.rs
index 0c4cf2615..bf7d55d6d 100644
--- a/crates/ra_assists/src/add_derive.rs
+++ b/crates/ra_assists/src/add_derive.rs
@@ -1,11 +1,11 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::{ 2use ra_syntax::{
3 ast::{self, AstNode, AttrsOwner}, 3 ast::{self, AstNode, AttrsOwner},
4 SyntaxKind::{WHITESPACE, COMMENT}, 4 SyntaxKind::{COMMENT, WHITESPACE},
5 TextUnit, 5 TextUnit,
6}; 6};
7 7
8use crate::{AssistCtx, Assist, AssistId}; 8use crate::{Assist, AssistCtx, AssistId};
9 9
10pub(crate) fn add_derive(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 10pub(crate) fn add_derive(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
11 let nominal = ctx.node_at_offset::<ast::NominalDef>()?; 11 let nominal = ctx.node_at_offset::<ast::NominalDef>()?;
diff --git a/crates/ra_assists/src/add_explicit_type.rs b/crates/ra_assists/src/add_explicit_type.rs
index f3ed74b7f..bb47a32f0 100644
--- a/crates/ra_assists/src/add_explicit_type.rs
+++ b/crates/ra_assists/src/add_explicit_type.rs
@@ -1,13 +1,10 @@
1use hir::{ 1use hir::{db::HirDatabase, HirDisplay, Ty};
2 HirDisplay, Ty,
3 db::HirDatabase,
4};
5use ra_syntax::{ 2use ra_syntax::{
3 ast::{AstNode, LetStmt, NameOwner, PatKind},
6 T, 4 T,
7 ast::{LetStmt, PatKind, NameOwner, AstNode}
8}; 5};
9 6
10use crate::{AssistCtx, Assist, AssistId}; 7use crate::{Assist, AssistCtx, AssistId};
11 8
12/// Add explicit type assist. 9/// Add explicit type assist.
13pub(crate) fn add_explicit_type(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 10pub(crate) fn add_explicit_type(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
@@ -56,7 +53,7 @@ fn is_unknown(ty: &Ty) -> bool {
56mod tests { 53mod tests {
57 use super::*; 54 use super::*;
58 55
59 use crate::helpers::{ check_assist, check_assist_target, check_assist_not_applicable }; 56 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target};
60 57
61 #[test] 58 #[test]
62 fn add_explicit_type_target() { 59 fn add_explicit_type_target() {
diff --git a/crates/ra_assists/src/add_impl.rs b/crates/ra_assists/src/add_impl.rs
index fa1c85890..b81922c1d 100644
--- a/crates/ra_assists/src/add_impl.rs
+++ b/crates/ra_assists/src/add_impl.rs
@@ -1,11 +1,11 @@
1use join_to_string::join;
2use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use join_to_string::join;
3use ra_syntax::{ 3use ra_syntax::{
4 ast::{self, AstNode, NameOwner, TypeParamsOwner}, 4 ast::{self, AstNode, NameOwner, TypeParamsOwner},
5 TextUnit, 5 TextUnit,
6}; 6};
7 7
8use crate::{AssistCtx, Assist, AssistId}; 8use crate::{Assist, AssistCtx, AssistId};
9 9
10pub(crate) fn add_impl(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 10pub(crate) fn add_impl(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
11 let nominal = ctx.node_at_offset::<ast::NominalDef>()?; 11 let nominal = ctx.node_at_offset::<ast::NominalDef>()?;
diff --git a/crates/ra_assists/src/add_missing_impl_members.rs b/crates/ra_assists/src/add_missing_impl_members.rs
index 0c903a563..7fc8f63b3 100644
--- a/crates/ra_assists/src/add_missing_impl_members.rs
+++ b/crates/ra_assists/src/add_missing_impl_members.rs
@@ -1,9 +1,12 @@
1use crate::{Assist, AssistId, AssistCtx, ast_editor::{AstEditor, AstBuilder}}; 1use crate::{
2 ast_editor::{AstBuilder, AstEditor},
3 Assist, AssistCtx, AssistId,
4};
2 5
3use hir::{HasSource, db::HirDatabase}; 6use hir::{db::HirDatabase, HasSource};
4use ra_syntax::{SmolStr, TreeArc};
5use ra_syntax::ast::{self, AstNode, ImplItem, ImplItemKind, NameOwner};
6use ra_db::FilePosition; 7use ra_db::FilePosition;
8use ra_syntax::ast::{self, AstNode, ImplItem, ImplItemKind, NameOwner};
9use ra_syntax::{SmolStr, TreeArc};
7 10
8#[derive(PartialEq)] 11#[derive(PartialEq)]
9enum AddMissingImplMembersMode { 12enum AddMissingImplMembersMode {
diff --git a/crates/ra_assists/src/assist_ctx.rs b/crates/ra_assists/src/assist_ctx.rs
index 1d58d9e71..0ba5f3ae6 100644
--- a/crates/ra_assists/src/assist_ctx.rs
+++ b/crates/ra_assists/src/assist_ctx.rs
@@ -1,13 +1,13 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_text_edit::TextEditBuilder;
3use ra_db::FileRange; 2use ra_db::FileRange;
3use ra_fmt::{leading_indent, reindent};
4use ra_syntax::{ 4use ra_syntax::{
5 SourceFile, TextRange, AstNode, TextUnit, SyntaxNode, SyntaxElement, SyntaxToken, 5 algo::{find_covering_element, find_node_at_offset, find_token_at_offset, TokenAtOffset},
6 algo::{find_token_at_offset, find_node_at_offset, find_covering_element, TokenAtOffset}, 6 AstNode, SourceFile, SyntaxElement, SyntaxNode, SyntaxToken, TextRange, TextUnit,
7}; 7};
8use ra_fmt::{leading_indent, reindent}; 8use ra_text_edit::TextEditBuilder;
9 9
10use crate::{AssistLabel, AssistAction, AssistId}; 10use crate::{AssistAction, AssistId, AssistLabel};
11 11
12#[derive(Clone, Debug)] 12#[derive(Clone, Debug)]
13pub(crate) enum Assist { 13pub(crate) enum Assist {
diff --git a/crates/ra_assists/src/ast_editor.rs b/crates/ra_assists/src/ast_editor.rs
index 5f8ba3df6..c9a5cf8d9 100644
--- a/crates/ra_assists/src/ast_editor.rs
+++ b/crates/ra_assists/src/ast_editor.rs
@@ -1,10 +1,12 @@
1use std::{iter, ops::RangeInclusive}; 1use std::{iter, ops::RangeInclusive};
2 2
3use arrayvec::ArrayVec; 3use arrayvec::ArrayVec;
4use ra_text_edit::TextEditBuilder;
5use ra_syntax::{AstNode, TreeArc, ast, SyntaxKind::*, SyntaxElement, SourceFile, InsertPosition, Direction, T};
6use ra_fmt::leading_indent;
7use hir::Name; 4use hir::Name;
5use ra_fmt::leading_indent;
6use ra_syntax::{
7 ast, AstNode, Direction, InsertPosition, SourceFile, SyntaxElement, SyntaxKind::*, TreeArc, T,
8};
9use ra_text_edit::TextEditBuilder;
8 10
9pub struct AstEditor<N: AstNode> { 11pub struct AstEditor<N: AstNode> {
10 original_ast: TreeArc<N>, 12 original_ast: TreeArc<N>,
@@ -283,7 +285,7 @@ fn ast_node_from_file_text<N: AstNode>(text: &str) -> TreeArc<N> {
283 285
284mod tokens { 286mod tokens {
285 use once_cell::sync::Lazy; 287 use once_cell::sync::Lazy;
286 use ra_syntax::{AstNode, SourceFile, TreeArc, SyntaxToken, SyntaxKind::*, T}; 288 use ra_syntax::{AstNode, SourceFile, SyntaxKind::*, SyntaxToken, TreeArc, T};
287 289
288 static SOURCE_FILE: Lazy<TreeArc<SourceFile>> = Lazy::new(|| SourceFile::parse(",\n; ;").tree); 290 static SOURCE_FILE: Lazy<TreeArc<SourceFile>> = Lazy::new(|| SourceFile::parse(",\n; ;").tree);
289 291
diff --git a/crates/ra_assists/src/auto_import.rs b/crates/ra_assists/src/auto_import.rs
index 9617beb5c..75ab8fa0f 100644
--- a/crates/ra_assists/src/auto_import.rs
+++ b/crates/ra_assists/src/auto_import.rs
@@ -1,14 +1,15 @@
1use hir::{self, db::HirDatabase};
1use ra_text_edit::TextEditBuilder; 2use ra_text_edit::TextEditBuilder;
2use hir::{ self, db::HirDatabase};
3 3
4use ra_syntax::{
5 T,
6 ast::{ self, NameOwner }, AstNode, SyntaxNode, Direction, TextRange, SmolStr,
7 SyntaxKind::{ PATH, PATH_SEGMENT }
8};
9use crate::{ 4use crate::{
5 assist_ctx::{Assist, AssistCtx},
10 AssistId, 6 AssistId,
11 assist_ctx::{AssistCtx, Assist}, 7};
8use ra_syntax::{
9 ast::{self, NameOwner},
10 AstNode, Direction, SmolStr,
11 SyntaxKind::{PATH, PATH_SEGMENT},
12 SyntaxNode, TextRange, T,
12}; 13};
13 14
14fn collect_path_segments_raw<'a>( 15fn collect_path_segments_raw<'a>(
@@ -577,7 +578,7 @@ pub(crate) fn auto_import(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist
577#[cfg(test)] 578#[cfg(test)]
578mod tests { 579mod tests {
579 use super::*; 580 use super::*;
580 use crate::helpers::{ check_assist, check_assist_not_applicable }; 581 use crate::helpers::{check_assist, check_assist_not_applicable};
581 582
582 #[test] 583 #[test]
583 fn test_auto_import_add_use_no_anchor() { 584 fn test_auto_import_add_use_no_anchor() {
diff --git a/crates/ra_assists/src/change_visibility.rs b/crates/ra_assists/src/change_visibility.rs
index 4eb24d27f..6cabba3e3 100644
--- a/crates/ra_assists/src/change_visibility.rs
+++ b/crates/ra_assists/src/change_visibility.rs
@@ -1,12 +1,15 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::{ 2use ra_syntax::{
3 T, 3 ast::{self, NameOwner, VisibilityOwner},
4 AstNode, SyntaxNode, TextUnit, 4 AstNode,
5 ast::{self, VisibilityOwner, NameOwner}, 5 SyntaxKind::{
6 SyntaxKind::{VISIBILITY, FN_DEF, MODULE, STRUCT_DEF, ENUM_DEF, TRAIT_DEF, IDENT, WHITESPACE, COMMENT, ATTR}, 6 ATTR, COMMENT, ENUM_DEF, FN_DEF, IDENT, MODULE, STRUCT_DEF, TRAIT_DEF, VISIBILITY,
7 WHITESPACE,
8 },
9 SyntaxNode, TextUnit, T,
7}; 10};
8 11
9use crate::{AssistCtx, Assist, AssistId}; 12use crate::{Assist, AssistCtx, AssistId};
10 13
11pub(crate) fn change_visibility(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 14pub(crate) fn change_visibility(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
12 if let Some(vis) = ctx.node_at_offset::<ast::Visibility>() { 15 if let Some(vis) = ctx.node_at_offset::<ast::Visibility>() {
diff --git a/crates/ra_assists/src/fill_match_arms.rs b/crates/ra_assists/src/fill_match_arms.rs
index 71b101b40..d51010b84 100644
--- a/crates/ra_assists/src/fill_match_arms.rs
+++ b/crates/ra_assists/src/fill_match_arms.rs
@@ -1,13 +1,10 @@
1use std::fmt::Write;
2use itertools::Itertools; 1use itertools::Itertools;
2use std::fmt::Write;
3 3
4use hir::{ 4use hir::{db::HirDatabase, AdtDef, FieldSource, HasSource};
5 AdtDef, FieldSource, HasSource,
6 db::HirDatabase,
7};
8use ra_syntax::ast::{self, AstNode}; 5use ra_syntax::ast::{self, AstNode};
9 6
10use crate::{AssistCtx, Assist, AssistId}; 7use crate::{Assist, AssistCtx, AssistId};
11 8
12fn is_trivial_arm(arm: &ast::MatchArm) -> bool { 9fn is_trivial_arm(arm: &ast::MatchArm) -> bool {
13 fn single_pattern(arm: &ast::MatchArm) -> Option<ast::PatKind> { 10 fn single_pattern(arm: &ast::MatchArm) -> Option<ast::PatKind> {
diff --git a/crates/ra_assists/src/flip_binexpr.rs b/crates/ra_assists/src/flip_binexpr.rs
index 02d27f66d..5e41f9346 100644
--- a/crates/ra_assists/src/flip_binexpr.rs
+++ b/crates/ra_assists/src/flip_binexpr.rs
@@ -1,7 +1,7 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::ast::{AstNode, BinExpr, BinOp}; 2use ra_syntax::ast::{AstNode, BinExpr, BinOp};
3 3
4use crate::{AssistCtx, Assist, AssistId}; 4use crate::{Assist, AssistCtx, AssistId};
5 5
6/// Flip binary expression assist. 6/// Flip binary expression assist.
7pub(crate) fn flip_binexpr(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 7pub(crate) fn flip_binexpr(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
@@ -68,7 +68,7 @@ impl From<BinOp> for FlipAction {
68mod tests { 68mod tests {
69 use super::*; 69 use super::*;
70 70
71 use crate::helpers::{ check_assist, check_assist_target, check_assist_not_applicable }; 71 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target};
72 72
73 #[test] 73 #[test]
74 fn flip_binexpr_target_is_the_op() { 74 fn flip_binexpr_target_is_the_op() {
diff --git a/crates/ra_assists/src/flip_comma.rs b/crates/ra_assists/src/flip_comma.rs
index 7626ffad3..d8dba779f 100644
--- a/crates/ra_assists/src/flip_comma.rs
+++ b/crates/ra_assists/src/flip_comma.rs
@@ -1,11 +1,7 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::{ 2use ra_syntax::{algo::non_trivia_sibling, Direction, T};
3 T,
4 Direction,
5 algo::non_trivia_sibling,
6};
7 3
8use crate::{AssistCtx, Assist, AssistId}; 4use crate::{Assist, AssistCtx, AssistId};
9 5
10pub(crate) fn flip_comma(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 6pub(crate) fn flip_comma(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
11 let comma = ctx.token_at_offset().find(|leaf| leaf.kind() == T![,])?; 7 let comma = ctx.token_at_offset().find(|leaf| leaf.kind() == T![,])?;
diff --git a/crates/ra_assists/src/inline_local_variable.rs b/crates/ra_assists/src/inline_local_variable.rs
index e0479ef13..554de8b46 100644
--- a/crates/ra_assists/src/inline_local_variable.rs
+++ b/crates/ra_assists/src/inline_local_variable.rs
@@ -1,11 +1,11 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::{ 2use ra_syntax::{
3 ast::{self, AstNode, AstToken, PatKind, ExprKind}, 3 ast::{self, AstNode, AstToken, ExprKind, PatKind},
4 TextRange, 4 TextRange,
5}; 5};
6 6
7use crate::{Assist, AssistCtx, AssistId};
8use crate::assist_ctx::AssistBuilder; 7use crate::assist_ctx::AssistBuilder;
8use crate::{Assist, AssistCtx, AssistId};
9 9
10pub(crate) fn inline_local_varialbe(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 10pub(crate) fn inline_local_varialbe(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
11 let let_stmt = ctx.node_at_offset::<ast::LetStmt>()?; 11 let let_stmt = ctx.node_at_offset::<ast::LetStmt>()?;
diff --git a/crates/ra_assists/src/introduce_variable.rs b/crates/ra_assists/src/introduce_variable.rs
index 28467d341..f7f5ccafa 100644
--- a/crates/ra_assists/src/introduce_variable.rs
+++ b/crates/ra_assists/src/introduce_variable.rs
@@ -1,12 +1,14 @@
1use test_utils::tested_by;
2use hir::db::HirDatabase; 1use hir::db::HirDatabase;
3use ra_syntax::{ 2use ra_syntax::{
4 ast::{self, AstNode}, 3 ast::{self, AstNode},
4 SyntaxKind::{
5 BREAK_EXPR, COMMENT, LAMBDA_EXPR, LOOP_EXPR, MATCH_ARM, PATH_EXPR, RETURN_EXPR, WHITESPACE,
6 },
5 SyntaxNode, TextUnit, 7 SyntaxNode, TextUnit,
6 SyntaxKind::{WHITESPACE, MATCH_ARM, LAMBDA_EXPR, PATH_EXPR, BREAK_EXPR, LOOP_EXPR, RETURN_EXPR, COMMENT},
7}; 8};
9use test_utils::tested_by;
8 10
9use crate::{AssistCtx, Assist, AssistId}; 11use crate::{Assist, AssistCtx, AssistId};
10 12
11pub(crate) fn introduce_variable(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 13pub(crate) fn introduce_variable(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
12 if ctx.frange.range.is_empty() { 14 if ctx.frange.range.is_empty() {
@@ -121,7 +123,9 @@ fn anchor_stmt(expr: &ast::Expr) -> Option<(&SyntaxNode, bool)> {
121mod tests { 123mod tests {
122 use test_utils::covers; 124 use test_utils::covers;
123 125
124 use crate::helpers::{check_assist_range_not_applicable, check_assist_range, check_assist_range_target}; 126 use crate::helpers::{
127 check_assist_range, check_assist_range_not_applicable, check_assist_range_target,
128 };
125 129
126 use super::*; 130 use super::*;
127 131
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs
index 28eb0226b..0d848629d 100644
--- a/crates/ra_assists/src/lib.rs
+++ b/crates/ra_assists/src/lib.rs
@@ -11,12 +11,12 @@ pub mod ast_editor;
11 11
12use itertools::Itertools; 12use itertools::Itertools;
13 13
14use ra_text_edit::TextEdit;
15use ra_syntax::{TextRange, TextUnit};
16use ra_db::FileRange;
17use hir::db::HirDatabase; 14use hir::db::HirDatabase;
15use ra_db::FileRange;
16use ra_syntax::{TextRange, TextUnit};
17use ra_text_edit::TextEdit;
18 18
19pub(crate) use crate::assist_ctx::{AssistCtx, Assist}; 19pub(crate) use crate::assist_ctx::{Assist, AssistCtx};
20 20
21/// Unique identifier of the assist, should not be shown to the user 21/// Unique identifier of the assist, should not be shown to the user
22/// directly. 22/// directly.
@@ -127,11 +127,11 @@ fn all_assists<DB: HirDatabase>() -> &'static [fn(AssistCtx<DB>) -> Option<Assis
127#[cfg(test)] 127#[cfg(test)]
128mod helpers { 128mod helpers {
129 use hir::mock::MockDatabase; 129 use hir::mock::MockDatabase;
130 use ra_syntax::TextRange;
131 use ra_db::FileRange; 130 use ra_db::FileRange;
132 use test_utils::{extract_offset, extract_range, assert_eq_text, add_cursor}; 131 use ra_syntax::TextRange;
132 use test_utils::{add_cursor, assert_eq_text, extract_offset, extract_range};
133 133
134 use crate::{AssistCtx, Assist}; 134 use crate::{Assist, AssistCtx};
135 135
136 pub(crate) fn check_assist( 136 pub(crate) fn check_assist(
137 assist: fn(AssistCtx<MockDatabase>) -> Option<Assist>, 137 assist: fn(AssistCtx<MockDatabase>) -> Option<Assist>,
@@ -289,8 +289,8 @@ mod helpers {
289#[cfg(test)] 289#[cfg(test)]
290mod tests { 290mod tests {
291 use hir::mock::MockDatabase; 291 use hir::mock::MockDatabase;
292 use ra_syntax::TextRange;
293 use ra_db::FileRange; 292 use ra_db::FileRange;
293 use ra_syntax::TextRange;
294 use test_utils::{extract_offset, extract_range}; 294 use test_utils::{extract_offset, extract_range};
295 295
296 #[test] 296 #[test]
diff --git a/crates/ra_assists/src/move_guard.rs b/crates/ra_assists/src/move_guard.rs
index 22ba91fb7..e1ce86a33 100644
--- a/crates/ra_assists/src/move_guard.rs
+++ b/crates/ra_assists/src/move_guard.rs
@@ -1,12 +1,11 @@
1use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_syntax::{ 2use ra_syntax::{
3 TextUnit,
4 SyntaxElement,
5 ast::{MatchArm, AstNode, AstToken, IfExpr},
6 ast, 3 ast,
4 ast::{AstNode, AstToken, IfExpr, MatchArm},
5 SyntaxElement, TextUnit,
7}; 6};
8 7
9use crate::{AssistCtx, Assist, AssistId}; 8use crate::{Assist, AssistCtx, AssistId};
10 9
11pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 10pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
12 let match_arm = ctx.node_at_offset::<MatchArm>()?; 11 let match_arm = ctx.node_at_offset::<MatchArm>()?;
@@ -84,7 +83,7 @@ pub(crate) fn move_arm_cond_to_match_guard(mut ctx: AssistCtx<impl HirDatabase>)
84mod tests { 83mod tests {
85 use super::*; 84 use super::*;
86 85
87 use crate::helpers::{ check_assist, check_assist_target, check_assist_not_applicable }; 86 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target};
88 87
89 #[test] 88 #[test]
90 fn move_guard_to_arm_body_target() { 89 fn move_guard_to_arm_body_target() {
diff --git a/crates/ra_assists/src/remove_dbg.rs b/crates/ra_assists/src/remove_dbg.rs
index 6e900f8ef..5680f76ca 100644
--- a/crates/ra_assists/src/remove_dbg.rs
+++ b/crates/ra_assists/src/remove_dbg.rs
@@ -1,10 +1,9 @@
1use crate::{Assist, AssistCtx, AssistId};
1use hir::db::HirDatabase; 2use hir::db::HirDatabase;
2use ra_syntax::{ 3use ra_syntax::{
3 ast::{self, AstNode}, 4 ast::{self, AstNode},
4 TextUnit, 5 TextUnit, T,
5 T
6}; 6};
7use crate::{AssistCtx, Assist, AssistId};
8 7
9pub(crate) fn remove_dbg(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 8pub(crate) fn remove_dbg(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
10 let macro_call = ctx.node_at_offset::<ast::MacroCall>()?; 9 let macro_call = ctx.node_at_offset::<ast::MacroCall>()?;
diff --git a/crates/ra_assists/src/replace_if_let_with_match.rs b/crates/ra_assists/src/replace_if_let_with_match.rs
index 2b451f08d..c2c7cf70b 100644
--- a/crates/ra_assists/src/replace_if_let_with_match.rs
+++ b/crates/ra_assists/src/replace_if_let_with_match.rs
@@ -1,8 +1,8 @@
1use ra_syntax::{AstNode, ast};
2use ra_fmt::extract_trivial_expression;
3use hir::db::HirDatabase; 1use hir::db::HirDatabase;
2use ra_fmt::extract_trivial_expression;
3use ra_syntax::{ast, AstNode};
4 4
5use crate::{AssistCtx, Assist, AssistId}; 5use crate::{Assist, AssistCtx, AssistId};
6 6
7pub(crate) fn replace_if_let_with_match(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 7pub(crate) fn replace_if_let_with_match(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
8 let if_expr: &ast::IfExpr = ctx.node_at_offset()?; 8 let if_expr: &ast::IfExpr = ctx.node_at_offset()?;
diff --git a/crates/ra_assists/src/split_import.rs b/crates/ra_assists/src/split_import.rs
index 881c5ecdc..a8feb67c8 100644
--- a/crates/ra_assists/src/split_import.rs
+++ b/crates/ra_assists/src/split_import.rs
@@ -1,13 +1,9 @@
1use std::iter::successors; 1use std::iter::successors;
2 2
3use hir::db::HirDatabase; 3use hir::db::HirDatabase;
4use ra_syntax::{ 4use ra_syntax::{ast, AstNode, TextUnit, T};
5 T,
6 TextUnit, AstNode,
7 ast,
8};
9 5
10use crate::{AssistCtx, Assist, AssistId}; 6use crate::{Assist, AssistCtx, AssistId};
11 7
12pub(crate) fn split_import(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 8pub(crate) fn split_import(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
13 let colon_colon = ctx.token_at_offset().find(|leaf| leaf.kind() == T![::])?; 9 let colon_colon = ctx.token_at_offset().find(|leaf| leaf.kind() == T![::])?;
diff --git a/crates/ra_batch/src/lib.rs b/crates/ra_batch/src/lib.rs
index 43d3fb7e3..c25737aaa 100644
--- a/crates/ra_batch/src/lib.rs
+++ b/crates/ra_batch/src/lib.rs
@@ -1,14 +1,12 @@
1mod vfs_filter; 1mod vfs_filter;
2 2
3use std::{path::Path, collections::HashSet, error::Error}; 3use std::{collections::HashSet, error::Error, path::Path};
4 4
5use rustc_hash::FxHashMap; 5use rustc_hash::FxHashMap;
6 6
7use ra_db::{ 7use ra_db::{CrateGraph, FileId, SourceRootId};
8 CrateGraph, FileId, SourceRootId, 8use ra_ide_api::{AnalysisChange, AnalysisHost};
9}; 9use ra_project_model::{ProjectRoot, ProjectWorkspace};
10use ra_ide_api::{AnalysisHost, AnalysisChange};
11use ra_project_model::{ProjectWorkspace, ProjectRoot};
12use ra_vfs::{Vfs, VfsChange}; 10use ra_vfs::{Vfs, VfsChange};
13use vfs_filter::IncludeRustFiles; 11use vfs_filter::IncludeRustFiles;
14 12
@@ -106,8 +104,8 @@ pub fn load(
106 104
107#[cfg(test)] 105#[cfg(test)]
108mod tests { 106mod tests {
109 use ra_hir::Crate;
110 use super::*; 107 use super::*;
108 use ra_hir::Crate;
111 109
112 #[test] 110 #[test]
113 fn test_loading_rust_analyzer() { 111 fn test_loading_rust_analyzer() {
diff --git a/crates/ra_batch/src/vfs_filter.rs b/crates/ra_batch/src/vfs_filter.rs
index 8552ac999..2f0d8cb8b 100644
--- a/crates/ra_batch/src/vfs_filter.rs
+++ b/crates/ra_batch/src/vfs_filter.rs
@@ -1,6 +1,6 @@
1use std::path::PathBuf;
2use ra_project_model::ProjectRoot; 1use ra_project_model::ProjectRoot;
3use ra_vfs::{RootEntry, Filter, RelativePath}; 2use ra_vfs::{Filter, RelativePath, RootEntry};
3use std::path::PathBuf;
4 4
5/// `IncludeRustFiles` is used to convert 5/// `IncludeRustFiles` is used to convert
6/// from `ProjectRoot` to `RootEntry` for VFS 6/// from `ProjectRoot` to `RootEntry` for VFS
diff --git a/crates/ra_cli/src/analysis_bench.rs b/crates/ra_cli/src/analysis_bench.rs
index 33d472838..639ac763e 100644
--- a/crates/ra_cli/src/analysis_bench.rs
+++ b/crates/ra_cli/src/analysis_bench.rs
@@ -1,10 +1,10 @@
1use std::{ 1use std::{
2 path::{PathBuf, Path}, 2 path::{Path, PathBuf},
3 time::Instant, 3 time::Instant,
4}; 4};
5 5
6use ra_db::{SourceDatabase, salsa::Database}; 6use ra_db::{salsa::Database, SourceDatabase};
7use ra_ide_api::{AnalysisHost, Analysis, LineCol, FilePosition}; 7use ra_ide_api::{Analysis, AnalysisHost, FilePosition, LineCol};
8 8
9use crate::Result; 9use crate::Result;
10 10
diff --git a/crates/ra_cli/src/analysis_stats.rs b/crates/ra_cli/src/analysis_stats.rs
index a01c07c3f..b8ad6aebc 100644
--- a/crates/ra_cli/src/analysis_stats.rs
+++ b/crates/ra_cli/src/analysis_stats.rs
@@ -1,7 +1,7 @@
1use std::{collections::HashSet, time::Instant, fmt::Write, path::Path}; 1use std::{collections::HashSet, fmt::Write, path::Path, time::Instant};
2 2
3use ra_db::SourceDatabase; 3use ra_db::SourceDatabase;
4use ra_hir::{Crate, ModuleDef, Ty, ImplItem, HasSource}; 4use ra_hir::{Crate, HasSource, ImplItem, ModuleDef, Ty};
5use ra_syntax::AstNode; 5use ra_syntax::AstNode;
6 6
7use crate::Result; 7use crate::Result;
diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs
index d2f6544f8..25edbd5f7 100644
--- a/crates/ra_cli/src/main.rs
+++ b/crates/ra_cli/src/main.rs
@@ -1,13 +1,13 @@
1mod analysis_stats; 1mod analysis_stats;
2mod analysis_bench; 2mod analysis_bench;
3 3
4use std::{io::Read, error::Error}; 4use std::{error::Error, io::Read};
5 5
6use clap::{App, Arg, SubCommand}; 6use clap::{App, Arg, SubCommand};
7use ra_ide_api::{file_structure, Analysis};
8use ra_syntax::{SourceFile, TreeArc, AstNode};
9use flexi_logger::Logger; 7use flexi_logger::Logger;
8use ra_ide_api::{file_structure, Analysis};
10use ra_prof::profile; 9use ra_prof::profile;
10use ra_syntax::{AstNode, SourceFile, TreeArc};
11 11
12type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>; 12type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
13 13
diff --git a/crates/ra_db/src/input.rs b/crates/ra_db/src/input.rs
index c103503bd..5d3a6b3c9 100644
--- a/crates/ra_db/src/input.rs
+++ b/crates/ra_db/src/input.rs
@@ -197,7 +197,7 @@ impl CrateGraph {
197 197
198#[cfg(test)] 198#[cfg(test)]
199mod tests { 199mod tests {
200 use super::{CrateGraph, FileId, SmolStr, Edition::Edition2018}; 200 use super::{CrateGraph, Edition::Edition2018, FileId, SmolStr};
201 201
202 #[test] 202 #[test]
203 fn it_should_panic_because_of_cycle_dependencies() { 203 fn it_should_panic_because_of_cycle_dependencies() {
diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs
index f08616100..11e18a03d 100644
--- a/crates/ra_db/src/lib.rs
+++ b/crates/ra_db/src/lib.rs
@@ -4,17 +4,15 @@ mod input;
4 4
5use std::{panic, sync::Arc}; 5use std::{panic, sync::Arc};
6 6
7use ra_syntax::{TextUnit, TextRange, SourceFile, Parse};
8use relative_path::RelativePathBuf;
9use ra_prof::profile; 7use ra_prof::profile;
8use ra_syntax::{Parse, SourceFile, TextRange, TextUnit};
9use relative_path::RelativePathBuf;
10 10
11pub use ::salsa as salsa;
12pub use crate::{ 11pub use crate::{
13 cancellation::Canceled, 12 cancellation::Canceled,
14 input::{ 13 input::{CrateGraph, CrateId, Dependency, Edition, FileId, SourceRoot, SourceRootId},
15 FileId, CrateId, SourceRoot, SourceRootId, CrateGraph, Dependency, Edition,
16 },
17}; 14};
15pub use ::salsa;
18 16
19pub trait CheckCanceled { 17pub trait CheckCanceled {
20 /// Aborts current query if there are pending changes. 18 /// Aborts current query if there are pending changes.
diff --git a/crates/ra_fmt/src/lib.rs b/crates/ra_fmt/src/lib.rs
index aac5a1d23..1c2c04ad2 100644
--- a/crates/ra_fmt/src/lib.rs
+++ b/crates/ra_fmt/src/lib.rs
@@ -1,11 +1,13 @@
1//! This crate provides some utilities for indenting rust code. 1//! This crate provides some utilities for indenting rust code.
2//! 2//!
3use std::iter::successors;
4use itertools::Itertools; 3use itertools::Itertools;
5use ra_syntax::{ 4use ra_syntax::{
6 SyntaxNode, SyntaxKind::*, SyntaxToken, SyntaxKind, T,
7 ast::{self, AstNode, AstToken}, 5 ast::{self, AstNode, AstToken},
6 SyntaxKind,
7 SyntaxKind::*,
8 SyntaxNode, SyntaxToken, T,
8}; 9};
10use std::iter::successors;
9 11
10pub fn reindent(text: &str, indent: &str) -> String { 12pub fn reindent(text: &str, indent: &str) -> String {
11 let indent = format!("\n{}", indent); 13 let indent = format!("\n{}", indent);
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs
index b3843b35c..9c0c8fdd0 100644
--- a/crates/ra_hir/src/adt.rs
+++ b/crates/ra_hir/src/adt.rs
@@ -3,16 +3,15 @@
3 3
4use std::sync::Arc; 4use std::sync::Arc;
5 5
6use ra_arena::{RawId, Arena, impl_arena_id}; 6use ra_arena::{impl_arena_id, Arena, RawId};
7use ra_syntax::{ 7use ra_syntax::{
8 ast::{self, NameOwner, StructKind, TypeAscriptionOwner},
8 TreeArc, 9 TreeArc,
9 ast::{self, NameOwner, StructKind, TypeAscriptionOwner}
10}; 10};
11 11
12use crate::{ 12use crate::{
13 Name, AsName, Struct, Union, Enum, EnumVariant, Crate, AstDatabase, 13 type_ref::TypeRef, AsName, AstDatabase, Crate, DefDatabase, Enum, EnumVariant, FieldSource,
14 HirDatabase, StructField, FieldSource, Source, HasSource, 14 HasSource, HirDatabase, Name, Source, Struct, StructField, Union,
15 type_ref::TypeRef, DefDatabase,
16}; 15};
17 16
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 17#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index 75914ccb0..ed640d7fc 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -3,24 +3,32 @@ pub(crate) mod docs;
3 3
4use std::sync::Arc; 4use std::sync::Arc;
5 5
6use ra_db::{CrateId, SourceRootId, Edition, FileId}; 6use ra_db::{CrateId, Edition, FileId, SourceRootId};
7use ra_syntax::{ast::{self, NameOwner, TypeAscriptionOwner}, TreeArc}; 7use ra_syntax::{
8 ast::{self, NameOwner, TypeAscriptionOwner},
9 TreeArc,
10};
8 11
9use crate::{ 12use crate::{
10 Name, AsName, AstId, Ty, Either, KnownName, HasSource,
11 HirDatabase, DefDatabase, AstDatabase,
12 type_ref::TypeRef,
13 nameres::{ModuleScope, Namespace, ImportId, CrateModuleId},
14 expr::{Body, BodySourceMap, validation::ExprValidator},
15 ty::{TraitRef, InferenceResult, primitive::{IntTy, FloatTy, Signedness, IntBitness, FloatBitness}},
16 adt::{EnumVariantId, StructFieldId, VariantDef}, 13 adt::{EnumVariantId, StructFieldId, VariantDef},
14 diagnostics::DiagnosticSink,
15 expr::{validation::ExprValidator, Body, BodySourceMap},
17 generics::HasGenericParams, 16 generics::HasGenericParams,
18 ids::{FunctionId, StructId, EnumId, AstItemDef, ConstId, StaticId, TraitId, TypeAliasId, MacroDefId}, 17 ids::{
18 AstItemDef, ConstId, EnumId, FunctionId, MacroDefId, StaticId, StructId, TraitId,
19 TypeAliasId,
20 },
19 impl_block::ImplBlock, 21 impl_block::ImplBlock,
22 nameres::{CrateModuleId, ImportId, ModuleScope, Namespace},
20 resolve::Resolver, 23 resolve::Resolver,
21 diagnostics::{DiagnosticSink}, 24 traits::{TraitData, TraitItem},
22 traits::{TraitItem, TraitData}, 25 ty::{
26 primitive::{FloatBitness, FloatTy, IntBitness, IntTy, Signedness},
27 InferenceResult, TraitRef,
28 },
23 type_ref::Mutability, 29 type_ref::Mutability,
30 type_ref::TypeRef,
31 AsName, AstDatabase, AstId, DefDatabase, Either, HasSource, HirDatabase, KnownName, Name, Ty,
24}; 32};
25 33
26/// hir::Crate describes a single crate. It's the main interface with which 34/// hir::Crate describes a single crate. It's the main interface with which
diff --git a/crates/ra_hir/src/code_model/docs.rs b/crates/ra_hir/src/code_model/docs.rs
index da2b9b854..f696307a7 100644
--- a/crates/ra_hir/src/code_model/docs.rs
+++ b/crates/ra_hir/src/code_model/docs.rs
@@ -3,8 +3,8 @@ use std::sync::Arc;
3use ra_syntax::ast; 3use ra_syntax::ast;
4 4
5use crate::{ 5use crate::{
6 HirDatabase, DefDatabase, AstDatabase, HasSource, 6 AstDatabase, Const, DefDatabase, Enum, EnumVariant, FieldSource, Function, HasSource,
7 Module, StructField, Struct, Enum, EnumVariant, Static, Const, Function, Union, Trait, TypeAlias, FieldSource, MacroDef, 7 HirDatabase, MacroDef, Module, Static, Struct, StructField, Trait, TypeAlias, Union,
8}; 8};
9 9
10#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 10#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
diff --git a/crates/ra_hir/src/code_model/src.rs b/crates/ra_hir/src/code_model/src.rs
index 5785d3b26..72451e0e7 100644
--- a/crates/ra_hir/src/code_model/src.rs
+++ b/crates/ra_hir/src/code_model/src.rs
@@ -1,9 +1,9 @@
1use ra_syntax::{TreeArc, ast}; 1use ra_syntax::{ast, TreeArc};
2 2
3use crate::{ 3use crate::{
4 HirFileId, DefDatabase, AstDatabase, Module, ModuleSource, 4 ids::AstItemDef, AstDatabase, Const, DefDatabase, Enum, EnumVariant, FieldSource, Function,
5 StructField, Struct, Enum, Union, EnumVariant, Function, Static, Trait, Const, TypeAlias, 5 HirFileId, MacroDef, Module, ModuleSource, Static, Struct, StructField, Trait, TypeAlias,
6 FieldSource, MacroDef, ids::AstItemDef, 6 Union,
7}; 7};
8 8
9pub struct Source<T> { 9pub struct Source<T> {
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs
index eda22c0b0..a9c6c52d9 100644
--- a/crates/ra_hir/src/db.rs
+++ b/crates/ra_hir/src/db.rs
@@ -1,23 +1,25 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use parking_lot::Mutex; 3use parking_lot::Mutex;
4use ra_syntax::{SyntaxNode, TreeArc, SmolStr, ast}; 4use ra_db::{salsa, SourceDatabase};
5use ra_db::{SourceDatabase, salsa}; 5use ra_syntax::{ast, SmolStr, SyntaxNode, TreeArc};
6 6
7use crate::{ 7use crate::{
8 HirFileId, MacroDefId, AstIdMap, ErasedFileAstId, Crate, Module, MacroCallLoc, 8 adt::{EnumData, StructData},
9 Function, FnData, ExprScopes, TypeAlias, 9 generics::{GenericDef, GenericParams},
10 Struct, Enum, StructField,
11 Const, ConstData, Static,
12 DefWithBody, Trait,
13 ids, 10 ids,
14 nameres::{Namespace, ImportSourceMap, RawItems, CrateDefMap}, 11 impl_block::{ImplBlock, ImplSourceMap, ModuleImplBlocks},
15 ty::{InferenceResult, Ty, method_resolution::CrateImplBlocks, TypableDef, CallableDef, FnSig, TypeCtor, GenericPredicate, Substs}, 12 lang_item::{LangItemTarget, LangItems},
16 adt::{StructData, EnumData}, 13 nameres::{CrateDefMap, ImportSourceMap, Namespace, RawItems},
17 impl_block::{ModuleImplBlocks, ImplSourceMap, ImplBlock},
18 generics::{GenericParams, GenericDef},
19 traits::TraitData, 14 traits::TraitData,
20 lang_item::{LangItems, LangItemTarget}, type_alias::TypeAliasData, 15 ty::{
16 method_resolution::CrateImplBlocks, CallableDef, FnSig, GenericPredicate, InferenceResult,
17 Substs, Ty, TypableDef, TypeCtor,
18 },
19 type_alias::TypeAliasData,
20 AstIdMap, Const, ConstData, Crate, DefWithBody, Enum, ErasedFileAstId, ExprScopes, FnData,
21 Function, HirFileId, MacroCallLoc, MacroDefId, Module, Static, Struct, StructField, Trait,
22 TypeAlias,
21}; 23};
22 24
23/// We store all interned things in the single QueryGroup. 25/// We store all interned things in the single QueryGroup.
diff --git a/crates/ra_hir/src/diagnostics.rs b/crates/ra_hir/src/diagnostics.rs
index 2557ef18e..f5f2e65f3 100644
--- a/crates/ra_hir/src/diagnostics.rs
+++ b/crates/ra_hir/src/diagnostics.rs
@@ -1,9 +1,9 @@
1use std::{fmt, any::Any}; 1use std::{any::Any, fmt};
2 2
3use ra_syntax::{SyntaxNodePtr, TreeArc, AstPtr, TextRange, ast, SyntaxNode}; 3use ra_syntax::{ast, AstPtr, SyntaxNode, SyntaxNodePtr, TextRange, TreeArc};
4use relative_path::RelativePathBuf; 4use relative_path::RelativePathBuf;
5 5
6use crate::{HirFileId, HirDatabase, Name}; 6use crate::{HirDatabase, HirFileId, Name};
7 7
8/// Diagnostic defines hir API for errors and warnings. 8/// Diagnostic defines hir API for errors and warnings.
9/// 9///
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs
index b1973d19d..d5b4ba6b6 100644
--- a/crates/ra_hir/src/expr.rs
+++ b/crates/ra_hir/src/expr.rs
@@ -3,19 +3,25 @@ use std::sync::Arc;
3 3
4use rustc_hash::FxHashMap; 4use rustc_hash::FxHashMap;
5 5
6use ra_arena::{Arena, RawId, impl_arena_id, map::ArenaMap}; 6use ra_arena::{impl_arena_id, map::ArenaMap, Arena, RawId};
7use ra_syntax::{ 7use ra_syntax::{
8 SyntaxNodePtr, AstPtr, AstNode, 8 ast::{
9 ast::{self, TryBlockBodyOwner, LoopBodyOwner, ArgListOwner, NameOwner, LiteralKind,ArrayExprKind, TypeAscriptionOwner}, 9 self, ArgListOwner, ArrayExprKind, LiteralKind, LoopBodyOwner, NameOwner,
10 TryBlockBodyOwner, TypeAscriptionOwner,
11 },
12 AstNode, AstPtr, SyntaxNodePtr,
10}; 13};
11 14
12use crate::{ 15use crate::{
13 Path, Name, HirDatabase, Resolver,DefWithBody, Either, HirFileId, MacroCallLoc, MacroFileKind,
14 HasSource,
15 name::AsName, 16 name::AsName,
16 type_ref::{Mutability, TypeRef}, 17 type_ref::{Mutability, TypeRef},
18 DefWithBody, Either, HasSource, HirDatabase, HirFileId, MacroCallLoc, MacroFileKind, Name,
19 Path, Resolver,
20};
21use crate::{
22 path::GenericArgs,
23 ty::primitive::{FloatTy, IntTy, UncertainFloatTy, UncertainIntTy},
17}; 24};
18use crate::{path::GenericArgs, ty::primitive::{IntTy, UncertainIntTy, FloatTy, UncertainFloatTy}};
19 25
20pub use self::scope::ExprScopes; 26pub use self::scope::ExprScopes;
21 27
@@ -249,8 +255,8 @@ pub enum Expr {
249 Literal(Literal), 255 Literal(Literal),
250} 256}
251 257
252pub use ra_syntax::ast::PrefixOp as UnaryOp;
253pub use ra_syntax::ast::BinOp as BinaryOp; 258pub use ra_syntax::ast::BinOp as BinaryOp;
259pub use ra_syntax::ast::PrefixOp as UnaryOp;
254#[derive(Debug, Clone, Eq, PartialEq)] 260#[derive(Debug, Clone, Eq, PartialEq)]
255pub enum Array { 261pub enum Array {
256 ElementList(Vec<ExprId>), 262 ElementList(Vec<ExprId>),
diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs
index 83d226fc1..f27cc6e8d 100644
--- a/crates/ra_hir/src/expr/scope.rs
+++ b/crates/ra_hir/src/expr/scope.rs
@@ -1,12 +1,11 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use ra_arena::{impl_arena_id, Arena, RawId};
3use rustc_hash::FxHashMap; 4use rustc_hash::FxHashMap;
4use ra_arena::{Arena, RawId, impl_arena_id};
5 5
6use crate::{ 6use crate::{
7 Name, DefWithBody, 7 expr::{Body, Expr, ExprId, Pat, PatId, Statement},
8 expr::{PatId, ExprId, Pat, Expr, Body, Statement}, 8 DefWithBody, HirDatabase, Name,
9 HirDatabase,
10}; 9};
11 10
12#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] 11#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
@@ -173,10 +172,10 @@ fn compute_expr_scopes(expr: ExprId, body: &Body, scopes: &mut ExprScopes, scope
173#[cfg(test)] 172#[cfg(test)]
174mod tests { 173mod tests {
175 use ra_db::SourceDatabase; 174 use ra_db::SourceDatabase;
176 use ra_syntax::{algo::find_node_at_offset, AstNode, SyntaxNodePtr, ast}; 175 use ra_syntax::{algo::find_node_at_offset, ast, AstNode, SyntaxNodePtr};
177 use test_utils::{extract_offset, assert_eq_text}; 176 use test_utils::{assert_eq_text, extract_offset};
178 177
179 use crate::{source_binder::SourceAnalyzer, mock::MockDatabase}; 178 use crate::{mock::MockDatabase, source_binder::SourceAnalyzer};
180 179
181 fn do_check(code: &str, expected: &[&str]) { 180 fn do_check(code: &str, expected: &[&str]) {
182 let (off, code) = extract_offset(code); 181 let (off, code) = extract_offset(code);
diff --git a/crates/ra_hir/src/expr/validation.rs b/crates/ra_hir/src/expr/validation.rs
index 534fd482b..8206dae2e 100644
--- a/crates/ra_hir/src/expr/validation.rs
+++ b/crates/ra_hir/src/expr/validation.rs
@@ -1,17 +1,16 @@
1use std::sync::Arc;
2use rustc_hash::FxHashSet; 1use rustc_hash::FxHashSet;
2use std::sync::Arc;
3 3
4use ra_syntax::ast::{AstNode, StructLit}; 4use ra_syntax::ast::{AstNode, StructLit};
5 5
6use super::{Expr, ExprId, StructLitField};
6use crate::{ 7use crate::{
7 expr::AstPtr,
8 HirDatabase, Function, Name, HasSource,
9 diagnostics::{DiagnosticSink, MissingFields},
10 adt::AdtDef, 8 adt::AdtDef,
11 Path, 9 diagnostics::{DiagnosticSink, MissingFields},
10 expr::AstPtr,
12 ty::InferenceResult, 11 ty::InferenceResult,
12 Function, HasSource, HirDatabase, Name, Path,
13}; 13};
14use super::{Expr, StructLitField, ExprId};
15 14
16pub(crate) struct ExprValidator<'a, 'b: 'a> { 15pub(crate) struct ExprValidator<'a, 'b: 'a> {
17 func: Function, 16 func: Function,
diff --git a/crates/ra_hir/src/generics.rs b/crates/ra_hir/src/generics.rs
index 462b136b7..9929331d3 100644
--- a/crates/ra_hir/src/generics.rs
+++ b/crates/ra_hir/src/generics.rs
@@ -5,13 +5,14 @@
5 5
6use std::sync::Arc; 6use std::sync::Arc;
7 7
8use ra_syntax::ast::{self, NameOwner, TypeParamsOwner, TypeBoundsOwner, DefaultTypeParamOwner}; 8use ra_syntax::ast::{self, DefaultTypeParamOwner, NameOwner, TypeBoundsOwner, TypeParamsOwner};
9 9
10use crate::{ 10use crate::{
11 HasSource, 11 db::{AstDatabase, DefDatabase, HirDatabase},
12 Name, AsName, Function, Struct, Union, Enum, Trait, TypeAlias, ImplBlock, Container, AdtDef, 12 path::Path,
13 db::{HirDatabase, DefDatabase, AstDatabase}, 13 type_ref::TypeRef,
14 path::Path, type_ref::TypeRef, 14 AdtDef, AsName, Container, Enum, Function, HasSource, ImplBlock, Name, Struct, Trait,
15 TypeAlias, Union,
15}; 16};
16 17
17/// Data about a generic parameter (to a function, struct, impl, ...). 18/// Data about a generic parameter (to a function, struct, impl, ...).
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs
index b7215ac03..bd1e2f2e6 100644
--- a/crates/ra_hir/src/ids.rs
+++ b/crates/ra_hir/src/ids.rs
@@ -3,14 +3,12 @@ use std::{
3 sync::Arc, 3 sync::Arc,
4}; 4};
5 5
6use ra_db::{FileId, salsa};
7use ra_syntax::{TreeArc, AstNode, ast, SyntaxNode};
8use ra_prof::profile;
9use mbe::MacroRules; 6use mbe::MacroRules;
7use ra_db::{salsa, FileId};
8use ra_prof::profile;
9use ra_syntax::{ast, AstNode, SyntaxNode, TreeArc};
10 10
11use crate::{ 11use crate::{AstDatabase, AstId, DefDatabase, FileAstId, InternDatabase, Module, Source};
12 Module, DefDatabase, AstId, FileAstId, AstDatabase, Source, InternDatabase,
13};
14 12
15/// hir makes heavy use of ids: integer (u32) handlers to various things. You 13/// hir makes heavy use of ids: integer (u32) handlers to various things. You
16/// can think of id as a pointer (but without a lifetime) or a file descriptor 14/// can think of id as a pointer (but without a lifetime) or a file descriptor
diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs
index fb9daf1bf..ce134b27a 100644
--- a/crates/ra_hir/src/impl_block.rs
+++ b/crates/ra_hir/src/impl_block.rs
@@ -1,21 +1,21 @@
1use std::sync::Arc;
2use rustc_hash::FxHashMap; 1use rustc_hash::FxHashMap;
2use std::sync::Arc;
3 3
4use ra_arena::{Arena, RawId, impl_arena_id, map::ArenaMap}; 4use ra_arena::{impl_arena_id, map::ArenaMap, Arena, RawId};
5use ra_syntax::{ 5use ra_syntax::{
6 ast::{self, AstNode},
6 AstPtr, SourceFile, TreeArc, 7 AstPtr, SourceFile, TreeArc,
7 ast::{self, AstNode}
8}; 8};
9 9
10use crate::{ 10use crate::{
11 Const, TypeAlias, Function, HirFileId, AstDatabase, HasSource, Source, 11 code_model::{Module, ModuleSource},
12 HirDatabase, DefDatabase, TraitRef, 12 generics::HasGenericParams,
13 type_ref::TypeRef,
14 ids::LocationCtx, 13 ids::LocationCtx,
15 resolve::Resolver, 14 resolve::Resolver,
16 ty::Ty, 15 ty::Ty,
17 generics::HasGenericParams, 16 type_ref::TypeRef,
18 code_model::{Module, ModuleSource} 17 AstDatabase, Const, DefDatabase, Function, HasSource, HirDatabase, HirFileId, Source, TraitRef,
18 TypeAlias,
19}; 19};
20 20
21#[derive(Debug, Default, PartialEq, Eq)] 21#[derive(Debug, Default, PartialEq, Eq)]
diff --git a/crates/ra_hir/src/lang_item.rs b/crates/ra_hir/src/lang_item.rs
index 48b60f2dd..f9fe47b0f 100644
--- a/crates/ra_hir/src/lang_item.rs
+++ b/crates/ra_hir/src/lang_item.rs
@@ -1,11 +1,11 @@
1use std::sync::Arc;
2use rustc_hash::FxHashMap; 1use rustc_hash::FxHashMap;
2use std::sync::Arc;
3 3
4use ra_syntax::{SmolStr, TreeArc, ast::AttrsOwner}; 4use ra_syntax::{ast::AttrsOwner, SmolStr, TreeArc};
5 5
6use crate::{ 6use crate::{
7 Crate, DefDatabase, Enum, Function, HirDatabase, ImplBlock, Module, 7 AstDatabase, Crate, DefDatabase, Enum, Function, HasSource, HirDatabase, ImplBlock, Module,
8 Static, Struct, Trait, ModuleDef, AstDatabase, HasSource 8 ModuleDef, Static, Struct, Trait,
9}; 9};
10 10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs
index 5afd846f5..ec0676783 100644
--- a/crates/ra_hir/src/lib.rs
+++ b/crates/ra_hir/src/lib.rs
@@ -47,39 +47,33 @@ mod code_model;
47mod marks; 47mod marks;
48 48
49use crate::{ 49use crate::{
50 db::{InternDatabase, AstDatabase, DefDatabase, HirDatabase}, 50 db::{AstDatabase, DefDatabase, HirDatabase, InternDatabase},
51 ids::MacroFileKind,
51 name::{AsName, KnownName}, 52 name::{AsName, KnownName},
52 source_id::{FileAstId, AstId},
53 resolve::Resolver, 53 resolve::Resolver,
54 ids::MacroFileKind, 54 source_id::{AstId, FileAstId},
55}; 55};
56 56
57pub use self::{ 57pub use self::{
58 either::Either,
59 path::{Path, PathKind},
60 name::Name,
61 source_id::{AstIdMap, ErasedFileAstId},
62 ids::{HirFileId, MacroDefId, MacroCallId, MacroCallLoc, MacroFile},
63 nameres::{PerNs, Namespace, ImportId},
64 ty::{Ty, ApplicationTy, TypeCtor, TraitRef, Substs, display::HirDisplay, CallableDef},
65 impl_block::{ImplBlock, ImplItem},
66 adt::AdtDef, 58 adt::AdtDef,
59 either::Either,
67 expr::ExprScopes, 60 expr::ExprScopes,
61 generics::{GenericParam, GenericParams, HasGenericParams},
62 ids::{HirFileId, MacroCallId, MacroCallLoc, MacroDefId, MacroFile},
63 impl_block::{ImplBlock, ImplItem},
64 name::Name,
65 nameres::{ImportId, Namespace, PerNs},
66 path::{Path, PathKind},
68 resolve::Resolution, 67 resolve::Resolution,
69 generics::{GenericParams, GenericParam, HasGenericParams}, 68 source_binder::{PathResolution, ScopeEntryWithSyntax, SourceAnalyzer},
70 source_binder::{SourceAnalyzer, PathResolution, ScopeEntryWithSyntax}, 69 source_id::{AstIdMap, ErasedFileAstId},
70 ty::{display::HirDisplay, ApplicationTy, CallableDef, Substs, TraitRef, Ty, TypeCtor},
71}; 71};
72 72
73pub use self::code_model::{ 73pub use self::code_model::{
74 Crate, CrateDependency, 74 docs::{DocDef, Docs, Documentation},
75 DefWithBody, 75 src::{HasSource, Source},
76 Module, ModuleDef, ModuleSource, 76 BuiltinType, Const, ConstData, Container, Crate, CrateDependency, DefWithBody, Enum,
77 Struct, Union, Enum, EnumVariant, 77 EnumVariant, FieldSource, FnData, Function, MacroDef, Module, ModuleDef, ModuleSource, Static,
78 Function, FnData, 78 Struct, StructField, Trait, TypeAlias, Union,
79 StructField, FieldSource,
80 Static, Const, ConstData,
81 Trait, TypeAlias, MacroDef, Container,
82 BuiltinType,
83 src::{Source, HasSource},
84 docs::{Docs, Documentation, DocDef},
85}; 79};
diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs
index c57dfbf01..b26ea58c9 100644
--- a/crates/ra_hir/src/mock.rs
+++ b/crates/ra_hir/src/mock.rs
@@ -1,13 +1,12 @@
1use std::{sync::Arc, panic}; 1use std::{panic, sync::Arc};
2 2
3use parking_lot::Mutex; 3use parking_lot::Mutex;
4use ra_db::{ 4use ra_db::{
5 FilePosition, FileId, CrateGraph, SourceRoot, SourceRootId, SourceDatabase, salsa, 5 salsa, CrateGraph, Edition, FileId, FilePosition, SourceDatabase, SourceRoot, SourceRootId,
6 Edition,
7}; 6};
8use relative_path::RelativePathBuf; 7use relative_path::RelativePathBuf;
9use test_utils::{parse_fixture, CURSOR_MARKER, extract_offset};
10use rustc_hash::FxHashMap; 8use rustc_hash::FxHashMap;
9use test_utils::{extract_offset, parse_fixture, CURSOR_MARKER};
11 10
12use crate::{db, diagnostics::DiagnosticSink}; 11use crate::{db, diagnostics::DiagnosticSink};
13 12
diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs
index f4ca454e4..53ef8d58a 100644
--- a/crates/ra_hir/src/nameres.rs
+++ b/crates/ra_hir/src/nameres.rs
@@ -55,28 +55,24 @@ mod tests;
55 55
56use std::sync::Arc; 56use std::sync::Arc;
57 57
58use once_cell::sync::Lazy;
59use ra_arena::{impl_arena_id, Arena, RawId};
60use ra_db::{Edition, FileId};
61use ra_prof::profile;
62use ra_syntax::ast;
58use rustc_hash::{FxHashMap, FxHashSet}; 63use rustc_hash::{FxHashMap, FxHashSet};
59use ra_arena::{Arena, RawId, impl_arena_id};
60use ra_db::{FileId, Edition};
61use test_utils::tested_by; 64use test_utils::tested_by;
62use ra_syntax::ast;
63use ra_prof::profile;
64use once_cell::sync::Lazy;
65 65
66use crate::{ 66use crate::{
67 ModuleDef, Name, Crate, Module, MacroDef, AsName, BuiltinType, AstDatabase, 67 diagnostics::DiagnosticSink, either::Either, ids::MacroDefId,
68 DefDatabase, Path, PathKind, HirFileId, Trait, 68 nameres::diagnostics::DefDiagnostic, AsName, AstDatabase, AstId, BuiltinType, Crate,
69 ids::MacroDefId, 69 DefDatabase, HirFileId, MacroDef, Module, ModuleDef, Name, Path, PathKind, Trait,
70 diagnostics::DiagnosticSink,
71 nameres::diagnostics::DefDiagnostic,
72 either::Either,
73 AstId,
74}; 70};
75 71
76pub(crate) use self::raw::{RawItems, ImportSourceMap}; 72pub(crate) use self::raw::{ImportSourceMap, RawItems};
77 73
78pub use self::{ 74pub use self::{
79 per_ns::{PerNs, Namespace}, 75 per_ns::{Namespace, PerNs},
80 raw::ImportId, 76 raw::ImportId,
81}; 77};
82 78
@@ -512,14 +508,14 @@ impl CrateDefMap {
512} 508}
513 509
514mod diagnostics { 510mod diagnostics {
511 use ra_syntax::{ast, AstPtr};
515 use relative_path::RelativePathBuf; 512 use relative_path::RelativePathBuf;
516 use ra_syntax::{AstPtr, ast};
517 513
518 use crate::{ 514 use crate::{
519 AstId, DefDatabase, AstDatabase, 515 diagnostics::{DiagnosticSink, UnresolvedModule},
520 nameres::CrateModuleId, 516 nameres::CrateModuleId,
521 diagnostics::{DiagnosticSink, UnresolvedModule} 517 AstDatabase, AstId, DefDatabase,
522}; 518 };
523 519
524 #[derive(Debug, PartialEq, Eq)] 520 #[derive(Debug, PartialEq, Eq)]
525 pub(super) enum DefDiagnostic { 521 pub(super) enum DefDiagnostic {
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs
index ef4d1ed70..2b07ebf4a 100644
--- a/crates/ra_hir/src/nameres/collector.rs
+++ b/crates/ra_hir/src/nameres/collector.rs
@@ -1,22 +1,19 @@
1use arrayvec::ArrayVec; 1use arrayvec::ArrayVec;
2use rustc_hash::FxHashMap;
3use relative_path::RelativePathBuf;
4use test_utils::tested_by;
5use ra_db::FileId; 2use ra_db::FileId;
6use ra_syntax::ast; 3use ra_syntax::ast;
4use relative_path::RelativePathBuf;
5use rustc_hash::FxHashMap;
6use test_utils::tested_by;
7 7
8use crate::{ 8use crate::{
9 Function, Module, Struct, Union, Enum, Const, Static, Trait, TypeAlias, MacroDef, 9 either::Either,
10 DefDatabase, HirFileId, Name, Path, 10 ids::{AstItemDef, LocationCtx, MacroCallId, MacroCallLoc, MacroDefId, MacroFileKind},
11 KnownName, AstId,
12 nameres::{ 11 nameres::{
13 Resolution, PerNs, ModuleDef, ReachedFixedPoint, ResolveMode, 12 diagnostics::DefDiagnostic, raw, CrateDefMap, CrateModuleId, ItemOrMacro, ModuleData,
14 CrateDefMap, CrateModuleId, ModuleData, ItemOrMacro, 13 ModuleDef, PerNs, ReachedFixedPoint, Resolution, ResolveMode,
15 diagnostics::DefDiagnostic,
16 raw,
17 }, 14 },
18 ids::{AstItemDef, LocationCtx, MacroCallLoc, MacroCallId, MacroDefId, MacroFileKind}, 15 AstId, Const, DefDatabase, Enum, Function, HirFileId, KnownName, MacroDef, Module, Name, Path,
19 either::Either, 16 Static, Struct, Trait, TypeAlias, Union,
20}; 17};
21 18
22pub(super) fn collect_defs(db: &impl DefDatabase, mut def_map: CrateDefMap) -> CrateDefMap { 19pub(super) fn collect_defs(db: &impl DefDatabase, mut def_map: CrateDefMap) -> CrateDefMap {
@@ -666,9 +663,9 @@ fn resolve_submodule(
666mod tests { 663mod tests {
667 use ra_db::SourceDatabase; 664 use ra_db::SourceDatabase;
668 665
669 use crate::{Crate, mock::MockDatabase, DefDatabase};
670 use ra_arena::{Arena};
671 use super::*; 666 use super::*;
667 use crate::{mock::MockDatabase, Crate, DefDatabase};
668 use ra_arena::Arena;
672 use rustc_hash::FxHashSet; 669 use rustc_hash::FxHashSet;
673 670
674 fn do_collect_defs( 671 fn do_collect_defs(
diff --git a/crates/ra_hir/src/nameres/raw.rs b/crates/ra_hir/src/nameres/raw.rs
index a0afe282c..7ea59cb75 100644
--- a/crates/ra_hir/src/nameres/raw.rs
+++ b/crates/ra_hir/src/nameres/raw.rs
@@ -1,13 +1,16 @@
1use std::{sync::Arc, ops::Index}; 1use std::{ops::Index, sync::Arc};
2 2
3use test_utils::tested_by; 3use ra_arena::{impl_arena_id, map::ArenaMap, Arena, RawId};
4use ra_arena::{Arena, impl_arena_id, RawId, map::ArenaMap};
5use ra_syntax::{ 4use ra_syntax::{
6 AstNode, SourceFile, AstPtr, TreeArc, 5 ast::{self, AttrsOwner, NameOwner},
7 ast::{self, NameOwner, AttrsOwner}, 6 AstNode, AstPtr, SourceFile, TreeArc,
8}; 7};
8use test_utils::tested_by;
9 9
10use crate::{DefDatabase, Name, AsName, Path, HirFileId, ModuleSource, AstIdMap, FileAstId, Either, AstDatabase}; 10use crate::{
11 AsName, AstDatabase, AstIdMap, DefDatabase, Either, FileAstId, HirFileId, ModuleSource, Name,
12 Path,
13};
11 14
12/// `RawItems` is a set of top-level items in a file (except for impls). 15/// `RawItems` is a set of top-level items in a file (except for impls).
13/// 16///
diff --git a/crates/ra_hir/src/nameres/tests.rs b/crates/ra_hir/src/nameres/tests.rs
index 07b533e29..bd2d855cf 100644
--- a/crates/ra_hir/src/nameres/tests.rs
+++ b/crates/ra_hir/src/nameres/tests.rs
@@ -5,14 +5,14 @@ mod primitives;
5 5
6use std::sync::Arc; 6use std::sync::Arc;
7 7
8use insta::assert_snapshot_matches;
8use ra_db::SourceDatabase; 9use ra_db::SourceDatabase;
9use test_utils::covers; 10use test_utils::covers;
10use insta::assert_snapshot_matches;
11 11
12use crate::{ 12use crate::{
13 Crate, Either, 13 mock::{CrateGraphFixture, MockDatabase},
14 mock::{MockDatabase, CrateGraphFixture},
15 nameres::Resolution, 14 nameres::Resolution,
15 Crate, Either,
16}; 16};
17 17
18use super::*; 18use super::*;
diff --git a/crates/ra_hir/src/path.rs b/crates/ra_hir/src/path.rs
index 67afd5027..bce9d2d4b 100644
--- a/crates/ra_hir/src/path.rs
+++ b/crates/ra_hir/src/path.rs
@@ -1,8 +1,11 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use ra_syntax::{ast::{self, NameOwner}, AstNode}; 3use ra_syntax::{
4 ast::{self, NameOwner},
5 AstNode,
6};
4 7
5use crate::{Name, AsName, type_ref::TypeRef}; 8use crate::{type_ref::TypeRef, AsName, Name};
6 9
7#[derive(Debug, Clone, PartialEq, Eq, Hash)] 10#[derive(Debug, Clone, PartialEq, Eq, Hash)]
8pub struct Path { 11pub struct Path {
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs
index 7f8b3812c..fc981e9b3 100644
--- a/crates/ra_hir/src/resolve.rs
+++ b/crates/ra_hir/src/resolve.rs
@@ -4,16 +4,19 @@ use std::sync::Arc;
4use rustc_hash::{FxHashMap, FxHashSet}; 4use rustc_hash::{FxHashMap, FxHashSet};
5 5
6use crate::{ 6use crate::{
7 ModuleDef, Trait, MacroDef,
8 code_model::Crate, 7 code_model::Crate,
9 db::HirDatabase, 8 db::HirDatabase,
10 name::{Name, KnownName}, 9 either::Either,
11 nameres::{PerNs, CrateDefMap, CrateModuleId}, 10 expr::{
11 scope::{ExprScopes, ScopeId},
12 PatId,
13 },
12 generics::GenericParams, 14 generics::GenericParams,
13 expr::{scope::{ExprScopes, ScopeId}, PatId},
14 impl_block::ImplBlock, 15 impl_block::ImplBlock,
16 name::{KnownName, Name},
17 nameres::{CrateDefMap, CrateModuleId, PerNs},
15 path::Path, 18 path::Path,
16 either::Either, 19 MacroDef, ModuleDef, Trait,
17}; 20};
18 21
19#[derive(Debug, Clone, Default)] 22#[derive(Debug, Clone, Default)]
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs
index 08e86844d..429575fee 100644
--- a/crates/ra_hir/src/source_binder.rs
+++ b/crates/ra_hir/src/source_binder.rs
@@ -7,21 +7,25 @@
7/// purely for "IDE needs". 7/// purely for "IDE needs".
8use std::sync::Arc; 8use std::sync::Arc;
9 9
10use rustc_hash::{FxHashSet, FxHashMap};
11use ra_db::{FileId, FilePosition}; 10use ra_db::{FileId, FilePosition};
12use ra_syntax::{ 11use ra_syntax::{
13 SyntaxNode, AstPtr, TextUnit, SyntaxNodePtr, TextRange,
14 ast::{self, AstNode, NameOwner},
15 algo::find_node_at_offset, 12 algo::find_node_at_offset,
13 ast::{self, AstNode, NameOwner},
14 AstPtr,
16 SyntaxKind::*, 15 SyntaxKind::*,
16 SyntaxNode, SyntaxNodePtr, TextRange, TextUnit,
17}; 17};
18use rustc_hash::{FxHashMap, FxHashSet};
18 19
19use crate::{ 20use crate::{
20 HirDatabase, Function, Struct, Enum, Const, Static, Either, DefWithBody, PerNs, Name, 21 expr,
21 AsName, Module, HirFileId, Crate, Trait, Resolver, Ty, Path, MacroDef, 22 expr::{
22 expr::{BodySourceMap, scope::{ScopeId, ExprScopes}}, 23 scope::{ExprScopes, ScopeId},
24 BodySourceMap,
25 },
23 ids::LocationCtx, 26 ids::LocationCtx,
24 expr, AstId, 27 AsName, AstId, Const, Crate, DefWithBody, Either, Enum, Function, HirDatabase, HirFileId,
28 MacroDef, Module, Name, Path, PerNs, Resolver, Static, Struct, Trait, Ty,
25}; 29};
26 30
27/// Locates the module by `FileId`. Picks topmost module in the file. 31/// Locates the module by `FileId`. Picks topmost module in the file.
diff --git a/crates/ra_hir/src/source_id.rs b/crates/ra_hir/src/source_id.rs
index 986269e00..324b79824 100644
--- a/crates/ra_hir/src/source_id.rs
+++ b/crates/ra_hir/src/source_id.rs
@@ -1,9 +1,13 @@
1use std::{marker::PhantomData, sync::Arc, hash::{Hash, Hasher}}; 1use std::{
2 hash::{Hash, Hasher},
3 marker::PhantomData,
4 sync::Arc,
5};
2 6
3use ra_arena::{Arena, RawId, impl_arena_id}; 7use ra_arena::{impl_arena_id, Arena, RawId};
4use ra_syntax::{SyntaxNodePtr, TreeArc, SyntaxNode, AstNode, ast}; 8use ra_syntax::{ast, AstNode, SyntaxNode, SyntaxNodePtr, TreeArc};
5 9
6use crate::{HirFileId, AstDatabase}; 10use crate::{AstDatabase, HirFileId};
7 11
8/// `AstId` points to an AST node in any file. 12/// `AstId` points to an AST node in any file.
9/// 13///
diff --git a/crates/ra_hir/src/traits.rs b/crates/ra_hir/src/traits.rs
index f2950e1b2..fc0368303 100644
--- a/crates/ra_hir/src/traits.rs
+++ b/crates/ra_hir/src/traits.rs
@@ -1,13 +1,13 @@
1//! HIR for trait definitions. 1//! HIR for trait definitions.
2 2
3use std::sync::Arc;
4use rustc_hash::FxHashMap; 3use rustc_hash::FxHashMap;
4use std::sync::Arc;
5 5
6use ra_syntax::ast::{self, NameOwner}; 6use ra_syntax::ast::{self, NameOwner};
7 7
8use crate::{ 8use crate::{
9 Function, Const, TypeAlias, Name, DefDatabase, Trait, AstDatabase, Module, HasSource, 9 ids::LocationCtx, name::AsName, AstDatabase, Const, DefDatabase, Function, HasSource, Module,
10 ids::LocationCtx, name::AsName, 10 Name, Trait, TypeAlias,
11}; 11};
12 12
13#[derive(Debug, Clone, PartialEq, Eq)] 13#[derive(Debug, Clone, PartialEq, Eq)]
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs
index 842d49e1f..11afdc0f3 100644
--- a/crates/ra_hir/src/ty.rs
+++ b/crates/ra_hir/src/ty.rs
@@ -12,17 +12,20 @@ mod lower;
12mod infer; 12mod infer;
13pub(crate) mod display; 13pub(crate) mod display;
14 14
15use std::sync::Arc;
16use std::ops::Deref; 15use std::ops::Deref;
16use std::sync::Arc;
17use std::{fmt, mem}; 17use std::{fmt, mem};
18 18
19use crate::{Name, AdtDef, type_ref::Mutability, db::HirDatabase, Trait, GenericParams, TypeAlias}; 19use crate::{db::HirDatabase, type_ref::Mutability, AdtDef, GenericParams, Name, Trait, TypeAlias};
20use display::{HirDisplay, HirFormatter}; 20use display::{HirDisplay, HirFormatter};
21 21
22pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults};
23pub(crate) use infer::{infer_query, InferenceResult, InferTy};
24pub use lower::CallableDef;
25pub(crate) use autoderef::autoderef; 22pub(crate) use autoderef::autoderef;
23pub(crate) use infer::{infer_query, InferTy, InferenceResult};
24pub use lower::CallableDef;
25pub(crate) use lower::{
26 callable_item_sig, generic_defaults, generic_predicates, type_for_def, type_for_field,
27 TypableDef,
28};
26pub(crate) use traits::ProjectionPredicate; 29pub(crate) use traits::ProjectionPredicate;
27 30
28/// A type constructor or type name: this might be something like the primitive 31/// A type constructor or type name: this might be something like the primitive
diff --git a/crates/ra_hir/src/ty/autoderef.rs b/crates/ra_hir/src/ty/autoderef.rs
index 1f443d49b..90c1ae630 100644
--- a/crates/ra_hir/src/ty/autoderef.rs
+++ b/crates/ra_hir/src/ty/autoderef.rs
@@ -7,8 +7,8 @@ use std::iter::successors;
7 7
8use log::{info, warn}; 8use log::{info, warn};
9 9
10use crate::{HirDatabase, Name, Resolver, HasGenericParams}; 10use super::{traits::Solution, Canonical, Ty};
11use super::{traits::Solution, Ty, Canonical}; 11use crate::{HasGenericParams, HirDatabase, Name, Resolver};
12 12
13const AUTODEREF_RECURSION_LIMIT: usize = 10; 13const AUTODEREF_RECURSION_LIMIT: usize = 10;
14 14
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs
index 2c05ca734..a2dc92370 100644
--- a/crates/ra_hir/src/ty/infer.rs
+++ b/crates/ra_hir/src/ty/infer.rs
@@ -15,38 +15,37 @@
15 15
16use std::borrow::Cow; 16use std::borrow::Cow;
17use std::iter::repeat; 17use std::iter::repeat;
18use std::mem;
18use std::ops::Index; 19use std::ops::Index;
19use std::sync::Arc; 20use std::sync::Arc;
20use std::mem;
21 21
22use ena::unify::{InPlaceUnificationTable, UnifyKey, UnifyValue, NoError}; 22use ena::unify::{InPlaceUnificationTable, NoError, UnifyKey, UnifyValue};
23use rustc_hash::FxHashMap; 23use rustc_hash::FxHashMap;
24 24
25use ra_arena::map::ArenaMap; 25use ra_arena::map::ArenaMap;
26use ra_prof::profile; 26use ra_prof::profile;
27use test_utils::tested_by; 27use test_utils::tested_by;
28 28
29use super::{
30 autoderef, method_resolution, op, primitive,
31 traits::{Guidance, Obligation, Solution},
32 ApplicationTy, CallableDef, Substs, TraitRef, Ty, TypableDef, TypeCtor,
33};
29use crate::{ 34use crate::{
30 Function, StructField, Path, Name, FnData, AdtDef, ConstData, HirDatabase, 35 adt::VariantDef,
31 DefWithBody, ImplItem, 36 diagnostics::DiagnosticSink,
32 type_ref::{TypeRef, Mutability},
33 expr::{ 37 expr::{
34 Body, Expr, BindingAnnotation, Literal, ExprId, Pat, PatId, UnaryOp, BinaryOp, Statement, 38 self, Array, BinaryOp, BindingAnnotation, Body, Expr, ExprId, FieldPat, Literal, Pat,
35 FieldPat, Array, self, 39 PatId, Statement, UnaryOp,
36 }, 40 },
37 generics::{GenericParams, HasGenericParams}, 41 generics::{GenericParams, HasGenericParams},
38 path::{GenericArgs, GenericArg},
39 ModuleDef,
40 adt::VariantDef,
41 resolve::{Resolver, Resolution},
42 nameres::Namespace, 42 nameres::Namespace,
43 path::{GenericArg, GenericArgs},
44 resolve::{Resolution, Resolver},
43 ty::infer::diagnostics::InferenceDiagnostic, 45 ty::infer::diagnostics::InferenceDiagnostic,
44 diagnostics::DiagnosticSink, 46 type_ref::{Mutability, TypeRef},
45}; 47 AdtDef, ConstData, DefWithBody, FnData, Function, HirDatabase, ImplItem, ModuleDef, Name, Path,
46use super::{ 48 StructField,
47 Ty, TypableDef, Substs, primitive, op, ApplicationTy, TypeCtor, CallableDef, TraitRef,
48 traits::{Solution, Obligation, Guidance},
49 method_resolution, autoderef,
50}; 49};
51 50
52mod unify; 51mod unify;
@@ -1415,10 +1414,10 @@ impl Expectation {
1415 1414
1416mod diagnostics { 1415mod diagnostics {
1417 use crate::{ 1416 use crate::{
1418 expr::ExprId,
1419 diagnostics::{DiagnosticSink, NoSuchField}, 1417 diagnostics::{DiagnosticSink, NoSuchField},
1420 HirDatabase, Function, HasSource, 1418 expr::ExprId,
1421}; 1419 Function, HasSource, HirDatabase,
1420 };
1422 1421
1423 #[derive(Debug, PartialEq, Eq, Clone)] 1422 #[derive(Debug, PartialEq, Eq, Clone)]
1424 pub(super) enum InferenceDiagnostic { 1423 pub(super) enum InferenceDiagnostic {
diff --git a/crates/ra_hir/src/ty/infer/unify.rs b/crates/ra_hir/src/ty/infer/unify.rs
index bc9719725..04633bdb2 100644
--- a/crates/ra_hir/src/ty/infer/unify.rs
+++ b/crates/ra_hir/src/ty/infer/unify.rs
@@ -1,8 +1,8 @@
1//! Unification and canonicalization logic. 1//! Unification and canonicalization logic.
2 2
3use crate::db::HirDatabase;
4use crate::ty::{Ty, Canonical, TraitRef, InferTy};
5use super::InferenceContext; 3use super::InferenceContext;
4use crate::db::HirDatabase;
5use crate::ty::{Canonical, InferTy, TraitRef, Ty};
6 6
7impl<'a, D: HirDatabase> InferenceContext<'a, D> { 7impl<'a, D: HirDatabase> InferenceContext<'a, D> {
8 pub(super) fn canonicalizer<'b>(&'b mut self) -> Canonicalizer<'a, 'b, D> 8 pub(super) fn canonicalizer<'b>(&'b mut self) -> Canonicalizer<'a, 'b, D>
diff --git a/crates/ra_hir/src/ty/lower.rs b/crates/ra_hir/src/ty/lower.rs
index cb494baf4..8b1b2a7f9 100644
--- a/crates/ra_hir/src/ty/lower.rs
+++ b/crates/ra_hir/src/ty/lower.rs
@@ -5,23 +5,22 @@
5//! - Building the type for an item: This happens through the `type_for_def` query. 5//! - Building the type for an item: This happens through the `type_for_def` query.
6//! 6//!
7//! This usually involves resolving names, collecting generic arguments etc. 7//! This usually involves resolving names, collecting generic arguments etc.
8use std::sync::Arc;
9use std::iter; 8use std::iter;
9use std::sync::Arc;
10 10
11use super::{FnSig, GenericPredicate, Substs, TraitRef, Ty, TypeCtor};
11use crate::{ 12use crate::{
12 Function, Struct, Union, StructField, Enum, EnumVariant, Path, ModuleDef, TypeAlias, Const, Static,
13 HirDatabase, BuiltinType,
14 type_ref::TypeRef,
15 nameres::Namespace,
16 resolve::{Resolver, Resolution},
17 path::{PathSegment, GenericArg},
18 generics::{HasGenericParams},
19 adt::VariantDef, 13 adt::VariantDef,
20 Trait, 14 generics::HasGenericParams,
21 generics::{WherePredicate, GenericDef}, 15 generics::{GenericDef, WherePredicate},
16 nameres::Namespace,
17 path::{GenericArg, PathSegment},
18 resolve::{Resolution, Resolver},
22 ty::AdtDef, 19 ty::AdtDef,
20 type_ref::TypeRef,
21 BuiltinType, Const, Enum, EnumVariant, Function, HirDatabase, ModuleDef, Path, Static, Struct,
22 StructField, Trait, TypeAlias, Union,
23}; 23};
24use super::{Ty, FnSig, Substs, TypeCtor, TraitRef, GenericPredicate};
25 24
26impl Ty { 25impl Ty {
27 pub(crate) fn from_hir(db: &impl HirDatabase, resolver: &Resolver, type_ref: &TypeRef) -> Self { 26 pub(crate) fn from_hir(db: &impl HirDatabase, resolver: &Resolver, type_ref: &TypeRef) -> Self {
diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs
index e023ff25a..bc890fe79 100644
--- a/crates/ra_hir/src/ty/method_resolution.rs
+++ b/crates/ra_hir/src/ty/method_resolution.rs
@@ -7,17 +7,17 @@ use std::sync::Arc;
7use arrayvec::ArrayVec; 7use arrayvec::ArrayVec;
8use rustc_hash::FxHashMap; 8use rustc_hash::FxHashMap;
9 9
10use super::{autoderef, Canonical, TraitRef};
10use crate::{ 11use crate::{
11 HirDatabase, Module, Crate, Name, Function, Trait, 12 generics::HasGenericParams,
12 impl_block::{ImplId, ImplBlock, ImplItem}, 13 impl_block::{ImplBlock, ImplId, ImplItem},
13 ty::{Ty, TypeCtor},
14 nameres::CrateModuleId, 14 nameres::CrateModuleId,
15 resolve::Resolver, 15 resolve::Resolver,
16 traits::TraitItem, 16 traits::TraitItem,
17 generics::HasGenericParams, 17 ty::primitive::{UncertainFloatTy, UncertainIntTy},
18 ty::primitive::{UncertainIntTy, UncertainFloatTy} 18 ty::{Ty, TypeCtor},
19 Crate, Function, HirDatabase, Module, Name, Trait,
19}; 20};
20use super::{TraitRef, Canonical, autoderef};
21 21
22/// This is used as a key for indexing impls. 22/// This is used as a key for indexing impls.
23#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 23#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
diff --git a/crates/ra_hir/src/ty/op.rs b/crates/ra_hir/src/ty/op.rs
index 235661a5d..9ba868298 100644
--- a/crates/ra_hir/src/ty/op.rs
+++ b/crates/ra_hir/src/ty/op.rs
@@ -1,5 +1,5 @@
1use crate::{ ty::ApplicationTy, expr::BinaryOp}; 1use super::{InferTy, Ty, TypeCtor};
2use super::{Ty, TypeCtor, InferTy}; 2use crate::{expr::BinaryOp, ty::ApplicationTy};
3 3
4pub(super) fn binary_op_return_ty(op: BinaryOp, rhs_ty: Ty) -> Ty { 4pub(super) fn binary_op_return_ty(op: BinaryOp, rhs_ty: Ty) -> Ty {
5 match op { 5 match op {
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index 0fe7805e2..20fa74fb4 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -1,17 +1,18 @@
1use std::sync::Arc;
2use std::fmt::Write; 1use std::fmt::Write;
2use std::sync::Arc;
3 3
4use insta::assert_snapshot_matches; 4use insta::assert_snapshot_matches;
5 5
6use ra_db::{SourceDatabase, salsa::Database, FilePosition}; 6use ra_db::{salsa::Database, FilePosition, SourceDatabase};
7use ra_syntax::{algo, ast::{self, AstNode}, SyntaxKind::*}; 7use ra_syntax::{
8 algo,
9 ast::{self, AstNode},
10 SyntaxKind::*,
11};
8use test_utils::covers; 12use test_utils::covers;
9 13
10use crate::{ 14use crate::{
11 mock::MockDatabase, 15 expr::BodySourceMap, mock::MockDatabase, ty::display::HirDisplay, ty::InferenceResult,
12 ty::display::HirDisplay,
13 ty::InferenceResult,
14 expr::BodySourceMap,
15 SourceAnalyzer, 16 SourceAnalyzer,
16}; 17};
17 18
diff --git a/crates/ra_hir/src/ty/traits.rs b/crates/ra_hir/src/ty/traits.rs
index 69c03a36c..3c902451b 100644
--- a/crates/ra_hir/src/ty/traits.rs
+++ b/crates/ra_hir/src/ty/traits.rs
@@ -1,16 +1,16 @@
1//! Trait solving using Chalk. 1//! Trait solving using Chalk.
2use std::sync::Arc; 2use std::sync::Arc;
3 3
4use parking_lot::Mutex;
5use rustc_hash::FxHashSet;
6use log::debug;
7use chalk_ir::cast::Cast; 4use chalk_ir::cast::Cast;
5use log::debug;
6use parking_lot::Mutex;
8use ra_prof::profile; 7use ra_prof::profile;
8use rustc_hash::FxHashSet;
9 9
10use crate::{Crate, Trait, db::HirDatabase, ImplBlock}; 10use super::{Canonical, ProjectionTy, TraitRef, Ty};
11use super::{TraitRef, Ty, Canonical, ProjectionTy}; 11use crate::{db::HirDatabase, Crate, ImplBlock, Trait};
12 12
13use self::chalk::{ToChalk, from_chalk}; 13use self::chalk::{from_chalk, ToChalk};
14 14
15pub(crate) mod chalk; 15pub(crate) mod chalk;
16 16
diff --git a/crates/ra_hir/src/ty/traits/chalk.rs b/crates/ra_hir/src/ty/traits/chalk.rs
index 4ceb8b70b..2a0537bc3 100644
--- a/crates/ra_hir/src/ty/traits/chalk.rs
+++ b/crates/ra_hir/src/ty/traits/chalk.rs
@@ -3,20 +3,25 @@ use std::sync::Arc;
3 3
4use log::debug; 4use log::debug;
5 5
6use chalk_ir::{TypeId, ImplId, TypeKindId, Parameter, Identifier, cast::Cast, PlaceholderIndex, UniverseIndex, TypeName}; 6use chalk_ir::{
7use chalk_rust_ir::{AssociatedTyDatum, TraitDatum, StructDatum, ImplDatum}; 7 cast::Cast, Identifier, ImplId, Parameter, PlaceholderIndex, TypeId, TypeKindId, TypeName,
8 UniverseIndex,
9};
10use chalk_rust_ir::{AssociatedTyDatum, ImplDatum, StructDatum, TraitDatum};
8 11
9use test_utils::tested_by;
10use ra_db::salsa::{InternId, InternKey}; 12use ra_db::salsa::{InternId, InternKey};
13use test_utils::tested_by;
11 14
15use super::ChalkContext;
12use crate::{ 16use crate::{
13 Trait, HasGenericParams, ImplBlock, Crate,
14 db::HirDatabase, 17 db::HirDatabase,
15 ty::{TraitRef, Ty, ApplicationTy, TypeCtor, Substs, GenericPredicate, CallableDef, ProjectionTy}, 18 generics::GenericDef,
16 ty::display::HirDisplay, 19 ty::display::HirDisplay,
17 generics::GenericDef, TypeAlias, ImplItem, 20 ty::{
21 ApplicationTy, CallableDef, GenericPredicate, ProjectionTy, Substs, TraitRef, Ty, TypeCtor,
22 },
23 Crate, HasGenericParams, ImplBlock, ImplItem, Trait, TypeAlias,
18}; 24};
19use super::ChalkContext;
20 25
21/// This represents a trait whose name we could not resolve. 26/// This represents a trait whose name we could not resolve.
22const UNKNOWN_TRAIT: chalk_ir::TraitId = 27const UNKNOWN_TRAIT: chalk_ir::TraitId =
diff --git a/crates/ra_hir/src/type_alias.rs b/crates/ra_hir/src/type_alias.rs
index eada37274..3b38c4740 100644
--- a/crates/ra_hir/src/type_alias.rs
+++ b/crates/ra_hir/src/type_alias.rs
@@ -4,7 +4,12 @@ use std::sync::Arc;
4 4
5use ra_syntax::ast::NameOwner; 5use ra_syntax::ast::NameOwner;
6 6
7use crate::{TypeAlias, db::{DefDatabase, AstDatabase}, type_ref::TypeRef, name::{Name, AsName}, HasSource}; 7use crate::{
8 db::{AstDatabase, DefDatabase},
9 name::{AsName, Name},
10 type_ref::TypeRef,
11 HasSource, TypeAlias,
12};
8 13
9#[derive(Debug, Clone, PartialEq, Eq)] 14#[derive(Debug, Clone, PartialEq, Eq)]
10pub struct TypeAliasData { 15pub struct TypeAliasData {
diff --git a/crates/ra_ide_api/src/assists.rs b/crates/ra_ide_api/src/assists.rs
index 355c0a42a..e3d1ac529 100644
--- a/crates/ra_ide_api/src/assists.rs
+++ b/crates/ra_ide_api/src/assists.rs
@@ -1,6 +1,6 @@
1use ra_db::{FileRange, FilePosition}; 1use ra_db::{FilePosition, FileRange};
2 2
3use crate::{SourceFileEdit, SourceChange, db::RootDatabase}; 3use crate::{db::RootDatabase, SourceChange, SourceFileEdit};
4 4
5pub use ra_assists::AssistId; 5pub use ra_assists::AssistId;
6 6
diff --git a/crates/ra_ide_api/src/call_info.rs b/crates/ra_ide_api/src/call_info.rs
index 2948c646b..368fdcaa1 100644
--- a/crates/ra_ide_api/src/call_info.rs
+++ b/crates/ra_ide_api/src/call_info.rs
@@ -1,12 +1,12 @@
1use test_utils::tested_by;
2use ra_db::SourceDatabase; 1use ra_db::SourceDatabase;
3use ra_syntax::{ 2use ra_syntax::{
4 AstNode, SyntaxNode, TextUnit,
5 ast::{self, ArgListOwner},
6 algo::find_node_at_offset, 3 algo::find_node_at_offset,
4 ast::{self, ArgListOwner},
5 AstNode, SyntaxNode, TextUnit,
7}; 6};
7use test_utils::tested_by;
8 8
9use crate::{FilePosition, CallInfo, FunctionSignature, db::RootDatabase}; 9use crate::{db::RootDatabase, CallInfo, FilePosition, FunctionSignature};
10 10
11/// Computes parameter information for the given call expression. 11/// Computes parameter information for the given call expression.
12pub(crate) fn call_info(db: &RootDatabase, position: FilePosition) -> Option<CallInfo> { 12pub(crate) fn call_info(db: &RootDatabase, position: FilePosition) -> Option<CallInfo> {
diff --git a/crates/ra_ide_api/src/change.rs b/crates/ra_ide_api/src/change.rs
index c0c289335..2a1af0a0a 100644
--- a/crates/ra_ide_api/src/change.rs
+++ b/crates/ra_ide_api/src/change.rs
@@ -1,22 +1,19 @@
1use std::{ 1use std::{fmt, sync::Arc, time};
2 fmt, time,
3 sync::Arc,
4};
5 2
6use rustc_hash::FxHashMap;
7use ra_db::{ 3use ra_db::{
8 SourceRootId, FileId, CrateGraph, SourceDatabase, SourceRoot,
9 salsa::{Database, SweepStrategy}, 4 salsa::{Database, SweepStrategy},
5 CrateGraph, FileId, SourceDatabase, SourceRoot, SourceRootId,
10}; 6};
7use ra_prof::{memory_usage, profile, Bytes};
11use ra_syntax::SourceFile; 8use ra_syntax::SourceFile;
12use ra_prof::{profile, Bytes, memory_usage};
13use relative_path::RelativePathBuf;
14use rayon::prelude::*; 9use rayon::prelude::*;
10use relative_path::RelativePathBuf;
11use rustc_hash::FxHashMap;
15 12
16use crate::{ 13use crate::{
17 db::RootDatabase, 14 db::RootDatabase,
18 symbol_index::{SymbolIndex, SymbolsDatabase},
19 status::syntax_tree_stats, 15 status::syntax_tree_stats,
16 symbol_index::{SymbolIndex, SymbolsDatabase},
20}; 17};
21 18
22#[derive(Default)] 19#[derive(Default)]
diff --git a/crates/ra_ide_api/src/completion.rs b/crates/ra_ide_api/src/completion.rs
index 3a75bbf92..c23b5da59 100644
--- a/crates/ra_ide_api/src/completion.rs
+++ b/crates/ra_ide_api/src/completion.rs
@@ -14,19 +14,19 @@ mod complete_postfix;
14 14
15use ra_db::SourceDatabase; 15use ra_db::SourceDatabase;
16 16
17#[cfg(test)]
18use crate::completion::completion_item::{check_completion, do_completion};
17use crate::{ 19use crate::{
18 db,
19 FilePosition,
20 completion::{ 20 completion::{
21 completion_item::{Completions, CompletionKind},
22 completion_context::CompletionContext, 21 completion_context::CompletionContext,
22 completion_item::{CompletionKind, Completions},
23 }, 23 },
24 24 db, FilePosition,
25}; 25};
26#[cfg(test)]
27use crate::completion::completion_item::{do_completion, check_completion};
28 26
29pub use crate::completion::completion_item::{CompletionItem, CompletionItemKind, InsertTextFormat}; 27pub use crate::completion::completion_item::{
28 CompletionItem, CompletionItemKind, InsertTextFormat,
29};
30 30
31/// Main entry point for completion. We run completion as a two-phase process. 31/// Main entry point for completion. We run completion as a two-phase process.
32/// 32///
diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs
index a97e876e9..a5f071442 100644
--- a/crates/ra_ide_api/src/completion/complete_dot.rs
+++ b/crates/ra_ide_api/src/completion/complete_dot.rs
@@ -1,4 +1,4 @@
1use hir::{Ty, AdtDef, TypeCtor}; 1use hir::{AdtDef, Ty, TypeCtor};
2 2
3use crate::completion::{CompletionContext, Completions}; 3use crate::completion::{CompletionContext, Completions};
4use rustc_hash::FxHashSet; 4use rustc_hash::FxHashSet;
@@ -49,7 +49,7 @@ fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty
49 49
50#[cfg(test)] 50#[cfg(test)]
51mod tests { 51mod tests {
52 use crate::completion::{do_completion, CompletionKind, CompletionItem}; 52 use crate::completion::{do_completion, CompletionItem, CompletionKind};
53 use insta::assert_debug_snapshot_matches; 53 use insta::assert_debug_snapshot_matches;
54 54
55 fn do_ref_completion(code: &str) -> Vec<CompletionItem> { 55 fn do_ref_completion(code: &str) -> Vec<CompletionItem> {
diff --git a/crates/ra_ide_api/src/completion/complete_fn_param.rs b/crates/ra_ide_api/src/completion/complete_fn_param.rs
index d738ffc13..5a117c485 100644
--- a/crates/ra_ide_api/src/completion/complete_fn_param.rs
+++ b/crates/ra_ide_api/src/completion/complete_fn_param.rs
@@ -1,11 +1,10 @@
1use ra_syntax::{ 1use ra_syntax::{
2 algo::visit::{visitor_ctx, VisitorCtx}, 2 algo::visit::{visitor_ctx, VisitorCtx},
3 ast, 3 ast, AstNode,
4 AstNode,
5}; 4};
6use rustc_hash::FxHashMap; 5use rustc_hash::FxHashMap;
7 6
8use crate::completion::{CompletionContext, Completions, CompletionKind, CompletionItem}; 7use crate::completion::{CompletionContext, CompletionItem, CompletionKind, Completions};
9 8
10/// Complete repeated parameters, both name and type. For example, if all 9/// Complete repeated parameters, both name and type. For example, if all
11/// functions in a file have a `spam: &mut Spam` parameter, a completion with 10/// functions in a file have a `spam: &mut Spam` parameter, a completion with
diff --git a/crates/ra_ide_api/src/completion/complete_keyword.rs b/crates/ra_ide_api/src/completion/complete_keyword.rs
index cfb9fd6e8..034ed934d 100644
--- a/crates/ra_ide_api/src/completion/complete_keyword.rs
+++ b/crates/ra_ide_api/src/completion/complete_keyword.rs
@@ -1,11 +1,14 @@
1use ra_syntax::{ 1use ra_syntax::{
2 algo::visit::{visitor, Visitor}, 2 algo::visit::{visitor, Visitor},
3 AstNode,
4 ast::{self, LoopBodyOwner}, 3 ast::{self, LoopBodyOwner},
5 SyntaxKind::*, SyntaxToken, 4 AstNode,
5 SyntaxKind::*,
6 SyntaxToken,
6}; 7};
7 8
8use crate::completion::{CompletionContext, CompletionItem, Completions, CompletionKind, CompletionItemKind}; 9use crate::completion::{
10 CompletionContext, CompletionItem, CompletionItemKind, CompletionKind, Completions,
11};
9 12
10pub(super) fn complete_use_tree_keyword(acc: &mut Completions, ctx: &CompletionContext) { 13pub(super) fn complete_use_tree_keyword(acc: &mut Completions, ctx: &CompletionContext) {
11 // complete keyword "crate" in use stmt 14 // complete keyword "crate" in use stmt
diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs
index da8fb9d8e..29586cd1f 100644
--- a/crates/ra_ide_api/src/completion/complete_path.rs
+++ b/crates/ra_ide_api/src/completion/complete_path.rs
@@ -1,8 +1,8 @@
1use hir::{Resolution, Either}; 1use hir::{Either, Resolution};
2use ra_syntax::AstNode; 2use ra_syntax::AstNode;
3use test_utils::tested_by; 3use test_utils::tested_by;
4 4
5use crate::completion::{Completions, CompletionContext}; 5use crate::completion::{CompletionContext, Completions};
6 6
7pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { 7pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) {
8 let path = match &ctx.path_prefix { 8 let path = match &ctx.path_prefix {
@@ -78,7 +78,7 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) {
78mod tests { 78mod tests {
79 use test_utils::covers; 79 use test_utils::covers;
80 80
81 use crate::completion::{CompletionKind, do_completion, CompletionItem}; 81 use crate::completion::{do_completion, CompletionItem, CompletionKind};
82 use insta::assert_debug_snapshot_matches; 82 use insta::assert_debug_snapshot_matches;
83 83
84 fn do_reference_completion(code: &str) -> Vec<CompletionItem> { 84 fn do_reference_completion(code: &str) -> Vec<CompletionItem> {
diff --git a/crates/ra_ide_api/src/completion/complete_pattern.rs b/crates/ra_ide_api/src/completion/complete_pattern.rs
index 6655a05a7..f12dfcc17 100644
--- a/crates/ra_ide_api/src/completion/complete_pattern.rs
+++ b/crates/ra_ide_api/src/completion/complete_pattern.rs
@@ -27,8 +27,8 @@ pub(super) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) {
27 27
28#[cfg(test)] 28#[cfg(test)]
29mod tests { 29mod tests {
30 use crate::completion::{do_completion, CompletionItem, CompletionKind};
30 use insta::assert_debug_snapshot_matches; 31 use insta::assert_debug_snapshot_matches;
31 use crate::completion::{CompletionItem, CompletionKind, do_completion};
32 32
33 fn complete(code: &str) -> Vec<CompletionItem> { 33 fn complete(code: &str) -> Vec<CompletionItem> {
34 do_completion(code, CompletionKind::Reference) 34 do_completion(code, CompletionKind::Reference)
diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs
index e20a12e2a..7042d8bff 100644
--- a/crates/ra_ide_api/src/completion/complete_postfix.rs
+++ b/crates/ra_ide_api/src/completion/complete_postfix.rs
@@ -1,18 +1,11 @@
1use crate::{ 1use crate::{
2 completion::{ 2 completion::{
3 completion_item::{
4 Completions,
5 Builder,
6 CompletionKind,
7 },
8 completion_context::CompletionContext, 3 completion_context::CompletionContext,
4 completion_item::{Builder, CompletionKind, Completions},
9 }, 5 },
10 CompletionItem 6 CompletionItem,
11};
12use ra_syntax::{
13 ast::AstNode,
14 TextRange
15}; 7};
8use ra_syntax::{ast::AstNode, TextRange};
16use ra_text_edit::TextEditBuilder; 9use ra_text_edit::TextEditBuilder;
17 10
18fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder { 11fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder {
@@ -58,7 +51,7 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
58 51
59#[cfg(test)] 52#[cfg(test)]
60mod tests { 53mod tests {
61 use crate::completion::{CompletionKind, check_completion}; 54 use crate::completion::{check_completion, CompletionKind};
62 55
63 fn check_snippet_completion(test_name: &str, code: &str) { 56 fn check_snippet_completion(test_name: &str, code: &str) {
64 check_completion(test_name, code, CompletionKind::Postfix); 57 check_completion(test_name, code, CompletionKind::Postfix);
diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs
index 0f8cfaae8..1ba871257 100644
--- a/crates/ra_ide_api/src/completion/complete_scope.rs
+++ b/crates/ra_ide_api/src/completion/complete_scope.rs
@@ -1,9 +1,9 @@
1use rustc_hash::FxHashMap;
2use ra_text_edit::TextEditBuilder;
3use ra_syntax::{SmolStr, ast, AstNode};
4use ra_assists::auto_import; 1use ra_assists::auto_import;
2use ra_syntax::{ast, AstNode, SmolStr};
3use ra_text_edit::TextEditBuilder;
4use rustc_hash::FxHashMap;
5 5
6use crate::completion::{CompletionItem, Completions, CompletionKind, CompletionContext}; 6use crate::completion::{CompletionContext, CompletionItem, CompletionKind, Completions};
7 7
8pub(super) fn complete_scope(acc: &mut Completions, ctx: &CompletionContext) { 8pub(super) fn complete_scope(acc: &mut Completions, ctx: &CompletionContext) {
9 if ctx.is_trivial_path { 9 if ctx.is_trivial_path {
@@ -121,7 +121,7 @@ impl ImportResolver {
121 121
122#[cfg(test)] 122#[cfg(test)]
123mod tests { 123mod tests {
124 use crate::completion::{CompletionKind, check_completion}; 124 use crate::completion::{check_completion, CompletionKind};
125 125
126 fn check_reference_completion(name: &str, code: &str) { 126 fn check_reference_completion(name: &str, code: &str) {
127 check_completion(name, code, CompletionKind::Reference); 127 check_completion(name, code, CompletionKind::Reference);
diff --git a/crates/ra_ide_api/src/completion/complete_snippet.rs b/crates/ra_ide_api/src/completion/complete_snippet.rs
index e1df9e625..d2d364b57 100644
--- a/crates/ra_ide_api/src/completion/complete_snippet.rs
+++ b/crates/ra_ide_api/src/completion/complete_snippet.rs
@@ -1,4 +1,7 @@
1use crate::completion::{CompletionItem, Completions, CompletionKind, CompletionItemKind, CompletionContext, completion_item::Builder}; 1use crate::completion::{
2 completion_item::Builder, CompletionContext, CompletionItem, CompletionItemKind,
3 CompletionKind, Completions,
4};
2 5
3fn snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Builder { 6fn snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Builder {
4 CompletionItem::new(CompletionKind::Snippet, ctx.source_range(), label) 7 CompletionItem::new(CompletionKind::Snippet, ctx.source_range(), label)
@@ -36,7 +39,7 @@ fn ${1:feature}() {
36 39
37#[cfg(test)] 40#[cfg(test)]
38mod tests { 41mod tests {
39 use crate::completion::{CompletionKind, check_completion}; 42 use crate::completion::{check_completion, CompletionKind};
40 43
41 fn check_snippet_completion(name: &str, code: &str) { 44 fn check_snippet_completion(name: &str, code: &str) {
42 check_completion(name, code, CompletionKind::Snippet); 45 check_completion(name, code, CompletionKind::Snippet);
diff --git a/crates/ra_ide_api/src/completion/complete_struct_literal.rs b/crates/ra_ide_api/src/completion/complete_struct_literal.rs
index 1eeea58f6..35fb21113 100644
--- a/crates/ra_ide_api/src/completion/complete_struct_literal.rs
+++ b/crates/ra_ide_api/src/completion/complete_struct_literal.rs
@@ -27,8 +27,8 @@ pub(super) fn complete_struct_literal(acc: &mut Completions, ctx: &CompletionCon
27 27
28#[cfg(test)] 28#[cfg(test)]
29mod tests { 29mod tests {
30 use crate::completion::{do_completion, CompletionItem, CompletionKind};
30 use insta::assert_debug_snapshot_matches; 31 use insta::assert_debug_snapshot_matches;
31 use crate::completion::{CompletionItem, CompletionKind, do_completion};
32 32
33 fn complete(code: &str) -> Vec<CompletionItem> { 33 fn complete(code: &str) -> Vec<CompletionItem> {
34 do_completion(code, CompletionKind::Reference) 34 do_completion(code, CompletionKind::Reference)
diff --git a/crates/ra_ide_api/src/completion/completion_context.rs b/crates/ra_ide_api/src/completion/completion_context.rs
index bda7d9bb2..55fdba50d 100644
--- a/crates/ra_ide_api/src/completion/completion_context.rs
+++ b/crates/ra_ide_api/src/completion/completion_context.rs
@@ -1,11 +1,11 @@
1use ra_text_edit::AtomTextEdit; 1use hir::source_binder;
2use ra_syntax::{ 2use ra_syntax::{
3 AstNode, SyntaxNode, SourceFile, TextUnit, TextRange, SyntaxToken, Parse, 3 algo::{find_covering_element, find_node_at_offset, find_token_at_offset},
4 ast, 4 ast, AstNode, Parse, SourceFile,
5 algo::{find_token_at_offset, find_covering_element, find_node_at_offset},
6 SyntaxKind::*, 5 SyntaxKind::*,
6 SyntaxNode, SyntaxToken, TextRange, TextUnit,
7}; 7};
8use hir::source_binder; 8use ra_text_edit::AtomTextEdit;
9 9
10use crate::{db, FilePosition}; 10use crate::{db, FilePosition};
11 11
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs
index 6f2a60640..f78c4c877 100644
--- a/crates/ra_ide_api/src/completion/completion_item.rs
+++ b/crates/ra_ide_api/src/completion/completion_item.rs
@@ -2,7 +2,7 @@ use std::fmt;
2 2
3use hir::Documentation; 3use hir::Documentation;
4use ra_syntax::TextRange; 4use ra_syntax::TextRange;
5use ra_text_edit::{TextEditBuilder, TextEdit}; 5use ra_text_edit::{TextEdit, TextEditBuilder};
6 6
7/// `CompletionItem` describes a single completion variant in the editor pop-up. 7/// `CompletionItem` describes a single completion variant in the editor pop-up.
8/// It is basically a POD with various properties. To construct a 8/// It is basically a POD with various properties. To construct a
@@ -285,8 +285,8 @@ impl Into<Vec<CompletionItem>> for Completions {
285 285
286#[cfg(test)] 286#[cfg(test)]
287pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> { 287pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> {
288 use crate::mock_analysis::{single_file_with_position, analysis_and_position};
289 use crate::completion::completions; 288 use crate::completion::completions;
289 use crate::mock_analysis::{analysis_and_position, single_file_with_position};
290 let (analysis, position) = if code.contains("//-") { 290 let (analysis, position) = if code.contains("//-") {
291 analysis_and_position(code) 291 analysis_and_position(code)
292 } else { 292 } else {
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs
index 973936736..98060947a 100644
--- a/crates/ra_ide_api/src/completion/presentation.rs
+++ b/crates/ra_ide_api/src/completion/presentation.rs
@@ -1,16 +1,14 @@
1//! This modules takes care of rendering various defenitions as completion items. 1//! This modules takes care of rendering various defenitions as completion items.
2use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution};
2use join_to_string::join; 3use join_to_string::join;
3use test_utils::tested_by;
4use hir::{Docs, PerNs, Resolution, HirDisplay, HasSource};
5use ra_syntax::ast::NameOwner; 4use ra_syntax::ast::NameOwner;
5use test_utils::tested_by;
6 6
7use crate::completion::{ 7use crate::completion::{
8 Completions, CompletionKind, CompletionItemKind, CompletionContext, CompletionItem, 8 CompletionContext, CompletionItem, CompletionItemKind, CompletionKind, Completions,
9}; 9};
10 10
11use crate::display::{ 11use crate::display::{const_label, function_label, type_label};
12 function_label, const_label, type_label,
13};
14 12
15impl Completions { 13impl Completions {
16 pub(crate) fn add_field( 14 pub(crate) fn add_field(
@@ -178,7 +176,7 @@ impl Completions {
178mod tests { 176mod tests {
179 use test_utils::covers; 177 use test_utils::covers;
180 178
181 use crate::completion::{CompletionKind, check_completion}; 179 use crate::completion::{check_completion, CompletionKind};
182 180
183 fn check_reference_completion(code: &str, expected_completions: &str) { 181 fn check_reference_completion(code: &str, expected_completions: &str) {
184 check_completion(code, expected_completions, CompletionKind::Reference); 182 check_completion(code, expected_completions, CompletionKind::Reference);
diff --git a/crates/ra_ide_api/src/db.rs b/crates/ra_ide_api/src/db.rs
index 94977764c..fc5b06ca8 100644
--- a/crates/ra_ide_api/src/db.rs
+++ b/crates/ra_ide_api/src/db.rs
@@ -1,14 +1,14 @@
1use std::{ 1use std::{sync::Arc, time};
2 sync::Arc,
3 time,
4};
5 2
6use ra_db::{ 3use ra_db::{
7 CheckCanceled, FileId, Canceled, SourceDatabase,
8 salsa::{self, Database}, 4 salsa::{self, Database},
5 Canceled, CheckCanceled, FileId, SourceDatabase,
9}; 6};
10 7
11use crate::{LineIndex, symbol_index::{self, SymbolsDatabase}}; 8use crate::{
9 symbol_index::{self, SymbolsDatabase},
10 LineIndex,
11};
12 12
13#[salsa::database( 13#[salsa::database(
14 ra_db::SourceDatabaseStorage, 14 ra_db::SourceDatabaseStorage,
diff --git a/crates/ra_ide_api/src/diagnostics.rs b/crates/ra_ide_api/src/diagnostics.rs
index 35b3d77df..9ab455b0e 100644
--- a/crates/ra_ide_api/src/diagnostics.rs
+++ b/crates/ra_ide_api/src/diagnostics.rs
@@ -1,17 +1,20 @@
1use std::cell::RefCell; 1use std::cell::RefCell;
2 2
3use hir::{
4 diagnostics::{Diagnostic as _, DiagnosticSink},
5 source_binder,
6};
3use itertools::Itertools; 7use itertools::Itertools;
4use hir::{source_binder, diagnostics::{Diagnostic as _, DiagnosticSink}}; 8use ra_assists::ast_editor::{AstBuilder, AstEditor};
5use ra_db::SourceDatabase; 9use ra_db::SourceDatabase;
10use ra_prof::profile;
6use ra_syntax::{ 11use ra_syntax::{
7 T, Location, TextRange, SyntaxNode, 12 ast::{self, AstNode, NamedField, NamedFieldList},
8 ast::{self, AstNode, NamedFieldList, NamedField}, 13 Location, SyntaxNode, TextRange, T,
9}; 14};
10use ra_assists::ast_editor::{AstEditor, AstBuilder};
11use ra_text_edit::{TextEdit, TextEditBuilder}; 15use ra_text_edit::{TextEdit, TextEditBuilder};
12use ra_prof::profile;
13 16
14use crate::{Diagnostic, FileId, FileSystemEdit, SourceChange, SourceFileEdit, db::RootDatabase}; 17use crate::{db::RootDatabase, Diagnostic, FileId, FileSystemEdit, SourceChange, SourceFileEdit};
15 18
16#[derive(Debug, Copy, Clone)] 19#[derive(Debug, Copy, Clone)]
17pub enum Severity { 20pub enum Severity {
@@ -170,9 +173,9 @@ fn check_struct_shorthand_initialization(
170 173
171#[cfg(test)] 174#[cfg(test)]
172mod tests { 175mod tests {
173 use test_utils::assert_eq_text;
174 use insta::assert_debug_snapshot_matches; 176 use insta::assert_debug_snapshot_matches;
175 use ra_syntax::SourceFile; 177 use ra_syntax::SourceFile;
178 use test_utils::assert_eq_text;
176 179
177 use crate::mock_analysis::single_file; 180 use crate::mock_analysis::single_file;
178 181
diff --git a/crates/ra_ide_api/src/display.rs b/crates/ra_ide_api/src/display.rs
index 882518838..cc59e99d8 100644
--- a/crates/ra_ide_api/src/display.rs
+++ b/crates/ra_ide_api/src/display.rs
@@ -6,14 +6,17 @@ mod navigation_target;
6mod structure; 6mod structure;
7mod short_label; 7mod short_label;
8 8
9use ra_syntax::{ast::{self, AstNode, TypeParamsOwner}, SyntaxKind::{ATTR, COMMENT}}; 9use ra_syntax::{
10 ast::{self, AstNode, TypeParamsOwner},
11 SyntaxKind::{ATTR, COMMENT},
12};
10 13
11pub use navigation_target::NavigationTarget;
12pub use structure::{StructureNode, file_structure};
13pub use function_signature::FunctionSignature; 14pub use function_signature::FunctionSignature;
15pub use navigation_target::NavigationTarget;
16pub use structure::{file_structure, StructureNode};
14 17
18pub(crate) use navigation_target::{description_from_symbol, docs_from_symbol};
15pub(crate) use short_label::ShortLabel; 19pub(crate) use short_label::ShortLabel;
16pub(crate) use navigation_target::{docs_from_symbol, description_from_symbol};
17 20
18pub(crate) fn function_label(node: &ast::FnDef) -> String { 21pub(crate) fn function_label(node: &ast::FnDef) -> String {
19 FunctionSignature::from(node).to_string() 22 FunctionSignature::from(node).to_string()
diff --git a/crates/ra_ide_api/src/display/function_signature.rs b/crates/ra_ide_api/src/display/function_signature.rs
index b0b0c7122..e7ad5a0d1 100644
--- a/crates/ra_ide_api/src/display/function_signature.rs
+++ b/crates/ra_ide_api/src/display/function_signature.rs
@@ -1,11 +1,14 @@
1use std::fmt::{self, Display}; 1use std::fmt::{self, Display};
2 2
3use hir::{Docs, Documentation, HasSource};
3use join_to_string::join; 4use join_to_string::join;
4use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner}; 5use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner};
5use std::convert::From; 6use std::convert::From;
6use hir::{Docs, Documentation, HasSource};
7 7
8use crate::{db, display::{where_predicates, generic_parameters}}; 8use crate::{
9 db,
10 display::{generic_parameters, where_predicates},
11};
9 12
10/// Contains information about a function signature 13/// Contains information about a function signature
11#[derive(Debug)] 14#[derive(Debug)]
diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs
index 823cdaaf3..1edb64e3d 100644
--- a/crates/ra_ide_api/src/display/navigation_target.rs
+++ b/crates/ra_ide_api/src/display/navigation_target.rs
@@ -1,14 +1,15 @@
1use hir::{FieldSource, HasSource, ImplItem, ModuleSource};
1use ra_db::{FileId, SourceDatabase}; 2use ra_db::{FileId, SourceDatabase};
2use ra_syntax::{ 3use ra_syntax::{
3 SyntaxNode, AstNode, SmolStr, TextRange, AstPtr, TreeArc,
4 SyntaxKind::{self, NAME},
5 ast::{self, DocCommentsOwner},
6 algo::visit::{visitor, Visitor}, 4 algo::visit::{visitor, Visitor},
5 ast::{self, DocCommentsOwner},
6 AstNode, AstPtr, SmolStr,
7 SyntaxKind::{self, NAME},
8 SyntaxNode, TextRange, TreeArc,
7}; 9};
8use hir::{ModuleSource, FieldSource, ImplItem, HasSource};
9 10
10use crate::{FileSymbol, db::RootDatabase};
11use super::short_label::ShortLabel; 11use super::short_label::ShortLabel;
12use crate::{db::RootDatabase, FileSymbol};
12 13
13/// `NavigationTarget` represents and element in the editor's UI which you can 14/// `NavigationTarget` represents and element in the editor's UI which you can
14/// click on to navigate to a particular piece of code. 15/// click on to navigate to a particular piece of code.
diff --git a/crates/ra_ide_api/src/display/short_label.rs b/crates/ra_ide_api/src/display/short_label.rs
index dc8245c34..f926f631f 100644
--- a/crates/ra_ide_api/src/display/short_label.rs
+++ b/crates/ra_ide_api/src/display/short_label.rs
@@ -1,6 +1,4 @@
1use ra_syntax::{ 1use ra_syntax::ast::{self, AstNode, NameOwner, TypeAscriptionOwner, VisibilityOwner};
2 ast::{self, NameOwner, VisibilityOwner, TypeAscriptionOwner, AstNode},
3};
4 2
5pub(crate) trait ShortLabel { 3pub(crate) trait ShortLabel {
6 fn short_label(&self) -> Option<String>; 4 fn short_label(&self) -> Option<String>;
diff --git a/crates/ra_ide_api/src/display/structure.rs b/crates/ra_ide_api/src/display/structure.rs
index e5057e833..e5b257b9b 100644
--- a/crates/ra_ide_api/src/display/structure.rs
+++ b/crates/ra_ide_api/src/display/structure.rs
@@ -2,7 +2,7 @@ use crate::TextRange;
2 2
3use ra_syntax::{ 3use ra_syntax::{
4 algo::visit::{visitor, Visitor}, 4 algo::visit::{visitor, Visitor},
5 ast::{self, AttrsOwner, NameOwner, TypeParamsOwner, TypeAscriptionOwner}, 5 ast::{self, AttrsOwner, NameOwner, TypeAscriptionOwner, TypeParamsOwner},
6 AstNode, SourceFile, SyntaxKind, SyntaxNode, WalkEvent, 6 AstNode, SourceFile, SyntaxKind, SyntaxNode, WalkEvent,
7}; 7};
8 8
diff --git a/crates/ra_ide_api/src/extend_selection.rs b/crates/ra_ide_api/src/extend_selection.rs
index a713b762c..655852514 100644
--- a/crates/ra_ide_api/src/extend_selection.rs
+++ b/crates/ra_ide_api/src/extend_selection.rs
@@ -1,13 +1,13 @@
1use ra_db::SourceDatabase; 1use ra_db::SourceDatabase;
2use ra_syntax::{ 2use ra_syntax::{
3 Direction, SyntaxNode, TextRange, TextUnit, SyntaxElement,
4 algo::{find_covering_element, find_token_at_offset, TokenAtOffset}, 3 algo::{find_covering_element, find_token_at_offset, TokenAtOffset},
5 SyntaxKind::*, SyntaxToken,
6 ast::{self, AstNode, AstToken}, 4 ast::{self, AstNode, AstToken},
7 T 5 Direction, SyntaxElement,
6 SyntaxKind::*,
7 SyntaxNode, SyntaxToken, TextRange, TextUnit, T,
8}; 8};
9 9
10use crate::{FileRange, db::RootDatabase}; 10use crate::{db::RootDatabase, FileRange};
11 11
12// FIXME: restore macro support 12// FIXME: restore macro support
13pub(crate) fn extend_selection(db: &RootDatabase, frange: FileRange) -> TextRange { 13pub(crate) fn extend_selection(db: &RootDatabase, frange: FileRange) -> TextRange {
@@ -205,7 +205,7 @@ fn adj_comments(comment: ast::Comment, dir: Direction) -> ast::Comment {
205 205
206#[cfg(test)] 206#[cfg(test)]
207mod tests { 207mod tests {
208 use ra_syntax::{SourceFile, AstNode}; 208 use ra_syntax::{AstNode, SourceFile};
209 use test_utils::extract_offset; 209 use test_utils::extract_offset;
210 210
211 use super::*; 211 use super::*;
diff --git a/crates/ra_ide_api/src/folding_ranges.rs b/crates/ra_ide_api/src/folding_ranges.rs
index 4400ff232..a1e6f94e0 100644
--- a/crates/ra_ide_api/src/folding_ranges.rs
+++ b/crates/ra_ide_api/src/folding_ranges.rs
@@ -1,9 +1,10 @@
1use rustc_hash::FxHashSet; 1use rustc_hash::FxHashSet;
2 2
3use ra_syntax::{ 3use ra_syntax::{
4 SourceFile, SyntaxNode, TextRange, Direction, SyntaxElement,
5 SyntaxKind::{self, *},
6 ast::{self, AstNode, AstToken, VisibilityOwner}, 4 ast::{self, AstNode, AstToken, VisibilityOwner},
5 Direction, SourceFile, SyntaxElement,
6 SyntaxKind::{self, *},
7 SyntaxNode, TextRange,
7}; 8};
8 9
9#[derive(Debug, PartialEq, Eq)] 10#[derive(Debug, PartialEq, Eq)]
diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs
index 63ba6cf9d..08feed7dc 100644
--- a/crates/ra_ide_api/src/goto_definition.rs
+++ b/crates/ra_ide_api/src/goto_definition.rs
@@ -1,19 +1,18 @@
1use ra_db::{FileId, SourceDatabase}; 1use ra_db::{FileId, SourceDatabase};
2use ra_syntax::{ 2use ra_syntax::{
3 AstNode, ast::{self, DocCommentsOwner},
4 algo::{ 3 algo::{
5 find_node_at_offset, 4 find_node_at_offset,
6 visit::{visitor, Visitor}, 5 visit::{visitor, Visitor},
7 }, 6 },
8 SyntaxNode, 7 ast::{self, DocCommentsOwner},
8 AstNode, SyntaxNode,
9}; 9};
10 10
11use crate::{ 11use crate::{
12 FilePosition, NavigationTarget,
13 db::RootDatabase, 12 db::RootDatabase,
14 RangeInfo,
15 name_ref_kind::{NameRefKind::*, classify_name_ref},
16 display::ShortLabel, 13 display::ShortLabel,
14 name_ref_kind::{classify_name_ref, NameRefKind::*},
15 FilePosition, NavigationTarget, RangeInfo,
17}; 16};
18 17
19pub(crate) fn goto_definition( 18pub(crate) fn goto_definition(
diff --git a/crates/ra_ide_api/src/goto_type_definition.rs b/crates/ra_ide_api/src/goto_type_definition.rs
index 6f5164e0b..d2d5eae9a 100644
--- a/crates/ra_ide_api/src/goto_type_definition.rs
+++ b/crates/ra_ide_api/src/goto_type_definition.rs
@@ -1,10 +1,7 @@
1use ra_db::SourceDatabase; 1use ra_db::SourceDatabase;
2use ra_syntax::{ 2use ra_syntax::{algo::find_token_at_offset, ast, AstNode};
3 AstNode, ast,
4 algo::find_token_at_offset
5};
6 3
7use crate::{FilePosition, NavigationTarget, db::RootDatabase, RangeInfo}; 4use crate::{db::RootDatabase, FilePosition, NavigationTarget, RangeInfo};
8 5
9pub(crate) fn goto_type_definition( 6pub(crate) fn goto_type_definition(
10 db: &RootDatabase, 7 db: &RootDatabase,
diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs
index df877c324..1edeb7579 100644
--- a/crates/ra_ide_api/src/hover.rs
+++ b/crates/ra_ide_api/src/hover.rs
@@ -1,16 +1,22 @@
1use hir::{HasSource, HirDisplay};
1use ra_db::SourceDatabase; 2use ra_db::SourceDatabase;
2use ra_syntax::{ 3use ra_syntax::{
3 AstNode, TreeArc, 4 algo::{
5 ancestors_at_offset, find_covering_element, find_node_at_offset,
6 visit::{visitor, Visitor},
7 },
4 ast::{self, DocCommentsOwner}, 8 ast::{self, DocCommentsOwner},
5 algo::{find_covering_element, find_node_at_offset, ancestors_at_offset, visit::{visitor, Visitor}}, 9 AstNode, TreeArc,
6}; 10};
7use hir::{HirDisplay, HasSource};
8 11
9use crate::{ 12use crate::{
10 db::RootDatabase, 13 db::RootDatabase,
11 RangeInfo, FilePosition, FileRange, 14 display::{
12 display::{rust_code_markup, rust_code_markup_with_doc, ShortLabel, docs_from_symbol, description_from_symbol}, 15 description_from_symbol, docs_from_symbol, rust_code_markup, rust_code_markup_with_doc,
13 name_ref_kind::{NameRefKind::*, classify_name_ref}, 16 ShortLabel,
17 },
18 name_ref_kind::{classify_name_ref, NameRefKind::*},
19 FilePosition, FileRange, RangeInfo,
14}; 20};
15 21
16/// Contains the results when hovering over an item 22/// Contains the results when hovering over an item
@@ -256,8 +262,10 @@ pub(crate) fn type_of(db: &RootDatabase, frange: FileRange) -> Option<String> {
256 262
257#[cfg(test)] 263#[cfg(test)]
258mod tests { 264mod tests {
265 use crate::mock_analysis::{
266 analysis_and_position, single_file_with_position, single_file_with_range,
267 };
259 use ra_syntax::TextRange; 268 use ra_syntax::TextRange;
260 use crate::mock_analysis::{single_file_with_position, single_file_with_range, analysis_and_position};
261 269
262 fn trim_markup(s: &str) -> &str { 270 fn trim_markup(s: &str) -> &str {
263 s.trim_start_matches("```rust\n").trim_end_matches("\n```") 271 s.trim_start_matches("```rust\n").trim_end_matches("\n```")
diff --git a/crates/ra_ide_api/src/impls.rs b/crates/ra_ide_api/src/impls.rs
index b80238d9e..f8a62bd71 100644
--- a/crates/ra_ide_api/src/impls.rs
+++ b/crates/ra_ide_api/src/impls.rs
@@ -1,11 +1,8 @@
1use ra_db::SourceDatabase;
2use ra_syntax::{
3 AstNode, ast,
4 algo::find_node_at_offset,
5};
6use hir::{db::HirDatabase, source_binder}; 1use hir::{db::HirDatabase, source_binder};
2use ra_db::SourceDatabase;
3use ra_syntax::{algo::find_node_at_offset, ast, AstNode};
7 4
8use crate::{FilePosition, NavigationTarget, db::RootDatabase, RangeInfo}; 5use crate::{db::RootDatabase, FilePosition, NavigationTarget, RangeInfo};
9 6
10pub(crate) fn goto_implementation( 7pub(crate) fn goto_implementation(
11 db: &RootDatabase, 8 db: &RootDatabase,
diff --git a/crates/ra_ide_api/src/join_lines.rs b/crates/ra_ide_api/src/join_lines.rs
index 3978e9635..8ab485adb 100644
--- a/crates/ra_ide_api/src/join_lines.rs
+++ b/crates/ra_ide_api/src/join_lines.rs
@@ -1,14 +1,11 @@
1use itertools::Itertools; 1use itertools::Itertools;
2use ra_fmt::{compute_ws, extract_trivial_expression};
2use ra_syntax::{ 3use ra_syntax::{
3 T,
4 SourceFile, TextRange, TextUnit, SyntaxNode, SyntaxElement, SyntaxToken,
5 SyntaxKind::{self, WHITESPACE},
6 algo::{find_covering_element, non_trivia_sibling}, 4 algo::{find_covering_element, non_trivia_sibling},
7 ast::{self, AstNode, AstToken}, 5 ast::{self, AstNode, AstToken},
8 Direction, 6 Direction, SourceFile, SyntaxElement,
9}; 7 SyntaxKind::{self, WHITESPACE},
10use ra_fmt::{ 8 SyntaxNode, SyntaxToken, TextRange, TextUnit, T,
11 compute_ws, extract_trivial_expression
12}; 9};
13use ra_text_edit::{TextEdit, TextEditBuilder}; 10use ra_text_edit::{TextEdit, TextEditBuilder};
14 11
diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs
index 817e65df0..95de9bcb8 100644
--- a/crates/ra_ide_api/src/lib.rs
+++ b/crates/ra_ide_api/src/lib.rs
@@ -46,33 +46,35 @@ mod test_utils;
46 46
47use std::sync::Arc; 47use std::sync::Arc;
48 48
49use ra_syntax::{SourceFile, TreeArc, TextRange, TextUnit};
50use ra_text_edit::TextEdit;
51use ra_db::{ 49use ra_db::{
52 SourceDatabase, CheckCanceled,
53 salsa::{self, ParallelDatabase}, 50 salsa::{self, ParallelDatabase},
51 CheckCanceled, SourceDatabase,
54}; 52};
53use ra_syntax::{SourceFile, TextRange, TextUnit, TreeArc};
54use ra_text_edit::TextEdit;
55use relative_path::RelativePathBuf; 55use relative_path::RelativePathBuf;
56 56
57use crate::{symbol_index::FileSymbol, db::LineIndexDatabase}; 57use crate::{db::LineIndexDatabase, symbol_index::FileSymbol};
58 58
59pub use crate::{ 59pub use crate::{
60 assists::{Assist, AssistId},
60 change::{AnalysisChange, LibraryData}, 61 change::{AnalysisChange, LibraryData},
61 completion::{CompletionItem, CompletionItemKind, InsertTextFormat}, 62 completion::{CompletionItem, CompletionItemKind, InsertTextFormat},
62 runnables::{Runnable, RunnableKind}, 63 diagnostics::Severity,
63 references::ReferenceSearchResult, 64 display::{file_structure, FunctionSignature, NavigationTarget, StructureNode},
64 assists::{Assist, AssistId},
65 hover::{HoverResult},
66 line_index::{LineIndex, LineCol},
67 line_index_utils::translate_offset_with_edit,
68 folding_ranges::{Fold, FoldKind}, 65 folding_ranges::{Fold, FoldKind},
66 hover::HoverResult,
67 line_index::{LineCol, LineIndex},
68 line_index_utils::translate_offset_with_edit,
69 references::ReferenceSearchResult,
70 runnables::{Runnable, RunnableKind},
69 syntax_highlighting::HighlightedRange, 71 syntax_highlighting::HighlightedRange,
70 diagnostics::Severity,
71 display::{FunctionSignature, NavigationTarget, StructureNode, file_structure},
72}; 72};
73 73
74pub use ra_db::{Canceled, CrateGraph, CrateId, FileId, FilePosition, FileRange, SourceRootId, Edition};
75pub use hir::Documentation; 74pub use hir::Documentation;
75pub use ra_db::{
76 Canceled, CrateGraph, CrateId, Edition, FileId, FilePosition, FileRange, SourceRootId,
77};
76 78
77pub type Cancelable<T> = Result<T, Canceled>; 79pub type Cancelable<T> = Result<T, Canceled>;
78 80
diff --git a/crates/ra_ide_api/src/line_index.rs b/crates/ra_ide_api/src/line_index.rs
index a53cf9ee0..71de8a928 100644
--- a/crates/ra_ide_api/src/line_index.rs
+++ b/crates/ra_ide_api/src/line_index.rs
@@ -145,7 +145,7 @@ pub fn to_line_col(text: &str, offset: TextUnit) -> LineCol {
145mod test_line_index { 145mod test_line_index {
146 use super::*; 146 use super::*;
147 use proptest::{prelude::*, proptest}; 147 use proptest::{prelude::*, proptest};
148 use ra_text_edit::test_utils::{arb_text, arb_offset}; 148 use ra_text_edit::test_utils::{arb_offset, arb_text};
149 149
150 #[test] 150 #[test]
151 fn test_line_index() { 151 fn test_line_index() {
diff --git a/crates/ra_ide_api/src/line_index_utils.rs b/crates/ra_ide_api/src/line_index_utils.rs
index a03467011..f9073dca2 100644
--- a/crates/ra_ide_api/src/line_index_utils.rs
+++ b/crates/ra_ide_api/src/line_index_utils.rs
@@ -1,6 +1,6 @@
1use crate::{line_index::Utf16Char, LineCol, LineIndex};
2use ra_syntax::{TextRange, TextUnit};
1use ra_text_edit::{AtomTextEdit, TextEdit}; 3use ra_text_edit::{AtomTextEdit, TextEdit};
2use ra_syntax::{TextUnit, TextRange};
3use crate::{LineIndex, LineCol, line_index::Utf16Char};
4 4
5#[derive(Debug, Clone)] 5#[derive(Debug, Clone)]
6enum Step { 6enum Step {
@@ -292,8 +292,8 @@ pub fn translate_offset_with_edit(
292#[cfg(test)] 292#[cfg(test)]
293mod test { 293mod test {
294 use super::*; 294 use super::*;
295 use proptest::{prelude::*, proptest};
296 use crate::line_index; 295 use crate::line_index;
296 use proptest::{prelude::*, proptest};
297 use ra_text_edit::test_utils::{arb_offset, arb_text_with_edit}; 297 use ra_text_edit::test_utils::{arb_offset, arb_text_with_edit};
298 use ra_text_edit::TextEdit; 298 use ra_text_edit::TextEdit;
299 299
diff --git a/crates/ra_ide_api/src/matching_brace.rs b/crates/ra_ide_api/src/matching_brace.rs
index 7f3e65b46..438b07896 100644
--- a/crates/ra_ide_api/src/matching_brace.rs
+++ b/crates/ra_ide_api/src/matching_brace.rs
@@ -1,10 +1,4 @@
1use ra_syntax::{ 1use ra_syntax::{algo::find_token_at_offset, ast::AstNode, SourceFile, SyntaxKind, TextUnit, T};
2 SourceFile, TextUnit,
3 algo::find_token_at_offset,
4 SyntaxKind::{self},
5 ast::AstNode,
6 T
7};
8 2
9pub fn matching_brace(file: &SourceFile, offset: TextUnit) -> Option<TextUnit> { 3pub fn matching_brace(file: &SourceFile, offset: TextUnit) -> Option<TextUnit> {
10 const BRACES: &[SyntaxKind] = 4 const BRACES: &[SyntaxKind] =
diff --git a/crates/ra_ide_api/src/mock_analysis.rs b/crates/ra_ide_api/src/mock_analysis.rs
index cb12dd0b1..4dbbd489a 100644
--- a/crates/ra_ide_api/src/mock_analysis.rs
+++ b/crates/ra_ide_api/src/mock_analysis.rs
@@ -3,7 +3,10 @@ use std::sync::Arc;
3use relative_path::RelativePathBuf; 3use relative_path::RelativePathBuf;
4use test_utils::{extract_offset, extract_range, parse_fixture, CURSOR_MARKER}; 4use test_utils::{extract_offset, extract_range, parse_fixture, CURSOR_MARKER};
5 5
6use crate::{Analysis, AnalysisChange, AnalysisHost, CrateGraph, FileId, FilePosition, FileRange, SourceRootId, Edition::Edition2018}; 6use crate::{
7 Analysis, AnalysisChange, AnalysisHost, CrateGraph, Edition::Edition2018, FileId, FilePosition,
8 FileRange, SourceRootId,
9};
7 10
8/// Mock analysis is used in test to bootstrap an AnalysisHost/Analysis 11/// Mock analysis is used in test to bootstrap an AnalysisHost/Analysis
9/// from a set of in-memory files. 12/// from a set of in-memory files.
diff --git a/crates/ra_ide_api/src/name_ref_kind.rs b/crates/ra_ide_api/src/name_ref_kind.rs
index 000036db4..67381c9c8 100644
--- a/crates/ra_ide_api/src/name_ref_kind.rs
+++ b/crates/ra_ide_api/src/name_ref_kind.rs
@@ -1,5 +1,5 @@
1use ra_syntax::{AstNode, AstPtr, ast};
2use hir::Either; 1use hir::Either;
2use ra_syntax::{ast, AstNode, AstPtr};
3use test_utils::tested_by; 3use test_utils::tested_by;
4 4
5use crate::db::RootDatabase; 5use crate::db::RootDatabase;
diff --git a/crates/ra_ide_api/src/parent_module.rs b/crates/ra_ide_api/src/parent_module.rs
index 27788c984..7d5f9ea2c 100644
--- a/crates/ra_ide_api/src/parent_module.rs
+++ b/crates/ra_ide_api/src/parent_module.rs
@@ -1,6 +1,6 @@
1use ra_db::{FilePosition, FileId, CrateId}; 1use ra_db::{CrateId, FileId, FilePosition};
2 2
3use crate::{NavigationTarget, db::RootDatabase}; 3use crate::{db::RootDatabase, NavigationTarget};
4 4
5/// This returns `Vec` because a module may be included from several places. We 5/// This returns `Vec` because a module may be included from several places. We
6/// don't handle this case yet though, so the Vec has length at most one. 6/// don't handle this case yet though, so the Vec has length at most one.
@@ -29,10 +29,10 @@ pub(crate) fn crate_for(db: &RootDatabase, file_id: FileId) -> Vec<CrateId> {
29#[cfg(test)] 29#[cfg(test)]
30mod tests { 30mod tests {
31 use crate::{ 31 use crate::{
32 AnalysisChange, CrateGraph,
33 mock_analysis::{analysis_and_position, MockAnalysis}, 32 mock_analysis::{analysis_and_position, MockAnalysis},
33 AnalysisChange, CrateGraph,
34 Edition::Edition2018, 34 Edition::Edition2018,
35}; 35 };
36 36
37 #[test] 37 #[test]
38 fn test_resolve_parent_module() { 38 fn test_resolve_parent_module() {
diff --git a/crates/ra_ide_api/src/references.rs b/crates/ra_ide_api/src/references.rs
index 12cdc6a6d..766c0ad74 100644
--- a/crates/ra_ide_api/src/references.rs
+++ b/crates/ra_ide_api/src/references.rs
@@ -1,22 +1,11 @@
1use hir::{source_binder, Either, ModuleSource};
2use ra_db::SourceDatabase;
3use ra_syntax::{algo::find_node_at_offset, ast, AstNode, SourceFile, SyntaxNode};
1use relative_path::{RelativePath, RelativePathBuf}; 4use relative_path::{RelativePath, RelativePathBuf};
2use hir::{ModuleSource, source_binder, Either};
3use ra_db::{SourceDatabase};
4use ra_syntax::{
5 AstNode, SyntaxNode, SourceFile,
6 ast,
7 algo::find_node_at_offset,
8};
9 5
10use crate::{ 6use crate::{
11 db::RootDatabase, 7 db::RootDatabase, FileId, FilePosition, FileRange, FileSystemEdit, NavigationTarget,
12 FilePosition, 8 SourceChange, SourceFileEdit, TextRange,
13 FileRange,
14 FileId,
15 NavigationTarget,
16 FileSystemEdit,
17 SourceChange,
18 SourceFileEdit,
19 TextRange,
20}; 9};
21 10
22#[derive(Debug, Clone)] 11#[derive(Debug, Clone)]
@@ -210,13 +199,12 @@ fn rename_reference(
210 199
211#[cfg(test)] 200#[cfg(test)]
212mod tests { 201mod tests {
202 use crate::{
203 mock_analysis::analysis_and_position, mock_analysis::single_file_with_position, FileId,
204 ReferenceSearchResult,
205 };
213 use insta::assert_debug_snapshot_matches; 206 use insta::assert_debug_snapshot_matches;
214 use test_utils::assert_eq_text; 207 use test_utils::assert_eq_text;
215 use crate::{
216 mock_analysis::single_file_with_position,
217 mock_analysis::analysis_and_position,
218 FileId, ReferenceSearchResult
219};
220 208
221 #[test] 209 #[test]
222 fn test_find_all_refs_for_local() { 210 fn test_find_all_refs_for_local() {
diff --git a/crates/ra_ide_api/src/runnables.rs b/crates/ra_ide_api/src/runnables.rs
index afe629d50..2d2d0b40e 100644
--- a/crates/ra_ide_api/src/runnables.rs
+++ b/crates/ra_ide_api/src/runnables.rs
@@ -1,9 +1,9 @@
1use itertools::Itertools; 1use itertools::Itertools;
2use ra_db::SourceDatabase;
2use ra_syntax::{ 3use ra_syntax::{
3 TextRange, SyntaxNode, 4 ast::{self, AstNode, AttrsOwner, ModuleItemOwner, NameOwner},
4 ast::{self, AstNode, NameOwner, ModuleItemOwner, AttrsOwner}, 5 SyntaxNode, TextRange,
5}; 6};
6use ra_db::SourceDatabase;
7 7
8use crate::{db::RootDatabase, FileId}; 8use crate::{db::RootDatabase, FileId};
9 9
diff --git a/crates/ra_ide_api/src/status.rs b/crates/ra_ide_api/src/status.rs
index ce25f4a87..1bcba0b8b 100644
--- a/crates/ra_ide_api/src/status.rs
+++ b/crates/ra_ide_api/src/status.rs
@@ -1,20 +1,20 @@
1use std::{ 1use std::{fmt, iter::FromIterator, sync::Arc};
2 fmt,
3 iter::FromIterator,
4 sync::Arc,
5};
6 2
7use ra_syntax::{TreeArc, SyntaxNode, Parse, AstNode}; 3use hir::MacroFile;
8use ra_db::{ 4use ra_db::{
5 salsa::{
6 debug::{DebugQueryTable, TableEntry},
7 Database,
8 },
9 FileTextQuery, SourceRootId, 9 FileTextQuery, SourceRootId,
10 salsa::{Database, debug::{DebugQueryTable, TableEntry}},
11}; 10};
12use ra_prof::{Bytes, memory_usage}; 11use ra_prof::{memory_usage, Bytes};
13use hir::MacroFile; 12use ra_syntax::{AstNode, Parse, SyntaxNode, TreeArc};
14 13
15use crate::{ 14use crate::{
16 FileId, db::RootDatabase, 15 db::RootDatabase,
17 symbol_index::{SymbolIndex, LibrarySymbolsQuery}, 16 symbol_index::{LibrarySymbolsQuery, SymbolIndex},
17 FileId,
18}; 18};
19 19
20pub(crate) fn syntax_tree_stats(db: &RootDatabase) -> SyntaxTreeStats { 20pub(crate) fn syntax_tree_stats(db: &RootDatabase) -> SyntaxTreeStats {
diff --git a/crates/ra_ide_api/src/symbol_index.rs b/crates/ra_ide_api/src/symbol_index.rs
index a6cd7bf61..2ca0a25d4 100644
--- a/crates/ra_ide_api/src/symbol_index.rs
+++ b/crates/ra_ide_api/src/symbol_index.rs
@@ -20,31 +20,27 @@
20//! file in the current workspace, and run a query against the union of all 20//! file in the current workspace, and run a query against the union of all
21//! those FSTs. 21//! those FSTs.
22use std::{ 22use std::{
23 fmt,