From d898ecb8f2c19eb041bcb27c7ce9edd9d891f2c2 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 16 Nov 2019 00:56:51 +0300 Subject: Force passing Source when creating a SourceAnalyzer --- crates/ra_ide_api/src/call_info.rs | 6 +++++- crates/ra_ide_api/src/completion/completion_context.rs | 7 +++++-- crates/ra_ide_api/src/goto_type_definition.rs | 3 ++- crates/ra_ide_api/src/hover.rs | 3 ++- crates/ra_ide_api/src/inlay_hints.rs | 7 +------ crates/ra_ide_api/src/references/classify.rs | 3 ++- 6 files changed, 17 insertions(+), 12 deletions(-) (limited to 'crates/ra_ide_api') diff --git a/crates/ra_ide_api/src/call_info.rs b/crates/ra_ide_api/src/call_info.rs index 3572825b5..41ee81511 100644 --- a/crates/ra_ide_api/src/call_info.rs +++ b/crates/ra_ide_api/src/call_info.rs @@ -19,7 +19,11 @@ pub(crate) fn call_info(db: &RootDatabase, position: FilePosition) -> Option { //FIXME: apply subst diff --git a/crates/ra_ide_api/src/completion/completion_context.rs b/crates/ra_ide_api/src/completion/completion_context.rs index 64cbc0f98..0906a4e1b 100644 --- a/crates/ra_ide_api/src/completion/completion_context.rs +++ b/crates/ra_ide_api/src/completion/completion_context.rs @@ -58,8 +58,11 @@ impl<'a> CompletionContext<'a> { ); let token = original_parse.tree().syntax().token_at_offset(position.offset).left_biased()?; - let analyzer = - hir::SourceAnalyzer::new(db, position.file_id, &token.parent(), Some(position.offset)); + let analyzer = hir::SourceAnalyzer::new( + db, + hir::Source::new(position.file_id.into(), &token.parent()), + Some(position.offset), + ); let mut ctx = CompletionContext { db, analyzer, diff --git a/crates/ra_ide_api/src/goto_type_definition.rs b/crates/ra_ide_api/src/goto_type_definition.rs index 71146591d..2327cb1e7 100644 --- a/crates/ra_ide_api/src/goto_type_definition.rs +++ b/crates/ra_ide_api/src/goto_type_definition.rs @@ -18,7 +18,8 @@ pub(crate) fn goto_type_definition( .find(|n| ast::Expr::cast(n.clone()).is_some() || ast::Pat::cast(n.clone()).is_some()) })?; - let analyzer = hir::SourceAnalyzer::new(db, position.file_id, &node, None); + let analyzer = + hir::SourceAnalyzer::new(db, hir::Source::new(position.file_id.into(), &node), None); let ty: hir::Ty = if let Some(ty) = ast::Expr::cast(node.clone()).and_then(|e| analyzer.type_of(db, &e)) diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs index 07d511fb3..92b4b1f79 100644 --- a/crates/ra_ide_api/src/hover.rs +++ b/crates/ra_ide_api/src/hover.rs @@ -230,7 +230,8 @@ pub(crate) fn type_of(db: &RootDatabase, frange: FileRange) -> Option { .ancestors() .take_while(|it| it.text_range() == leaf_node.text_range()) .find(|it| ast::Expr::cast(it.clone()).is_some() || ast::Pat::cast(it.clone()).is_some())?; - let analyzer = hir::SourceAnalyzer::new(db, frange.file_id, &node, None); + let analyzer = + hir::SourceAnalyzer::new(db, hir::Source::new(frange.file_id.into(), &node), None); let ty = if let Some(ty) = ast::Expr::cast(node.clone()).and_then(|e| analyzer.type_of(db, &e)) { ty diff --git a/crates/ra_ide_api/src/inlay_hints.rs b/crates/ra_ide_api/src/inlay_hints.rs index 2ff10b89a..0cd959848 100644 --- a/crates/ra_ide_api/src/inlay_hints.rs +++ b/crates/ra_ide_api/src/inlay_hints.rs @@ -32,6 +32,7 @@ fn get_inlay_hints( file_id: FileId, node: &SyntaxNode, ) -> Option> { + let analyzer = SourceAnalyzer::new(db, hir::Source::new(file_id.into(), node), None); match_ast! { match node { ast::LetStmt(it) => { @@ -39,11 +40,9 @@ fn get_inlay_hints( return None; } let pat = it.pat()?; - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); Some(get_pat_type_hints(db, &analyzer, pat, false)) }, ast::LambdaExpr(it) => { - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); it.param_list().map(|param_list| { param_list .params() @@ -56,21 +55,17 @@ fn get_inlay_hints( }, ast::ForExpr(it) => { let pat = it.pat()?; - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); Some(get_pat_type_hints(db, &analyzer, pat, false)) }, ast::IfExpr(it) => { let pat = it.condition()?.pat()?; - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); Some(get_pat_type_hints(db, &analyzer, pat, true)) }, ast::WhileExpr(it) => { let pat = it.condition()?.pat()?; - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); Some(get_pat_type_hints(db, &analyzer, pat, true)) }, ast::MatchArmList(it) => { - let analyzer = SourceAnalyzer::new(db, file_id, it.syntax(), None); Some( it .arms() diff --git a/crates/ra_ide_api/src/references/classify.rs b/crates/ra_ide_api/src/references/classify.rs index b5e35e29f..0228c634d 100644 --- a/crates/ra_ide_api/src/references/classify.rs +++ b/crates/ra_ide_api/src/references/classify.rs @@ -117,7 +117,8 @@ pub(crate) fn classify_name_ref( let _p = profile("classify_name_ref"); let parent = name_ref.syntax().parent()?; - let analyzer = SourceAnalyzer::new(db, file_id, name_ref.syntax(), None); + let analyzer = + SourceAnalyzer::new(db, hir::Source::new(file_id.into(), name_ref.syntax()), None); if let Some(method_call) = ast::MethodCallExpr::cast(parent.clone()) { tested_by!(goto_definition_works_for_methods); -- cgit v1.2.3