diff --git a/crates/ra_analysis/src/call_info.rs b/crates/ra_analysis/src/call_info.rs index 1dac955843f..27b760780ca 100644 --- a/crates/ra_analysis/src/call_info.rs +++ b/crates/ra_analysis/src/call_info.rs @@ -5,8 +5,8 @@ use ra_syntax::{ AstNode, SyntaxNode, TextUnit, TextRange, SyntaxKind::FN_DEF, ast::{self, ArgListOwner, DocCommentsOwner}, + algo::find_node_at_offset, }; -use ra_editor::find_node_at_offset; use crate::{FilePosition, CallInfo, db::RootDatabase}; diff --git a/crates/ra_analysis/src/completion/completion_context.rs b/crates/ra_analysis/src/completion/completion_context.rs index 988c21c58d3..01786bb69e9 100644 --- a/crates/ra_analysis/src/completion/completion_context.rs +++ b/crates/ra_analysis/src/completion/completion_context.rs @@ -1,9 +1,8 @@ -use ra_editor::find_node_at_offset; use ra_text_edit::AtomTextEdit; use ra_syntax::{ AstNode, SyntaxNode, SourceFile, TextUnit, TextRange, ast, - algo::{find_leaf_at_offset, find_covering_node}, + algo::{find_leaf_at_offset, find_covering_node, find_node_at_offset}, SyntaxKind::*, }; use hir::source_binder; diff --git a/crates/ra_analysis/src/goto_defenition.rs b/crates/ra_analysis/src/goto_defenition.rs index 0bcf13ebde4..fcd8d315e24 100644 --- a/crates/ra_analysis/src/goto_defenition.rs +++ b/crates/ra_analysis/src/goto_defenition.rs @@ -1,7 +1,8 @@ use ra_db::{FileId, Cancelable, SyntaxDatabase}; -use ra_syntax::{TextRange, AstNode, ast, SyntaxKind::{NAME, MODULE}}; - -use ra_editor::find_node_at_offset; +use ra_syntax::{ + TextRange, AstNode, ast, SyntaxKind::{NAME, MODULE}, + algo::find_node_at_offset, +}; use crate::{FilePosition, NavigationTarget, db::RootDatabase}; diff --git a/crates/ra_analysis/src/hover.rs b/crates/ra_analysis/src/hover.rs index 5607c3ef313..475524ee182 100644 --- a/crates/ra_analysis/src/hover.rs +++ b/crates/ra_analysis/src/hover.rs @@ -1,9 +1,8 @@ use ra_db::{Cancelable, SyntaxDatabase}; -use ra_editor::find_node_at_offset; use ra_syntax::{ AstNode, SyntaxNode, TreePtr, ast::{self, NameOwner}, - algo::{find_covering_node, find_leaf_at_offset, visit::{visitor, Visitor}}, + algo::{find_covering_node, find_node_at_offset, find_leaf_at_offset, visit::{visitor, Visitor}}, }; use crate::{db::RootDatabase, RangeInfo, FilePosition, FileRange, NavigationTarget}; diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index b3f75fdbebc..2b9963b3c23 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs @@ -6,10 +6,11 @@ use hir::{ self, Problem, source_binder, }; use ra_db::{FilesDatabase, SourceRoot, SourceRootId, SyntaxDatabase}; -use ra_editor::{self, find_node_at_offset, assists, LocalEdit, Severity}; +use ra_editor::{self, assists, LocalEdit, Severity}; use ra_syntax::{ TextRange, AstNode, SourceFile, ast::{self, NameOwner}, + algo::find_node_at_offset, SyntaxKind::*, }; diff --git a/crates/ra_editor/src/assists.rs b/crates/ra_editor/src/assists.rs index f839f6a7aba..83eabfc859f 100644 --- a/crates/ra_editor/src/assists.rs +++ b/crates/ra_editor/src/assists.rs @@ -14,13 +14,11 @@ mod replace_if_let_with_match; use ra_text_edit::{TextEdit, TextEditBuilder}; use ra_syntax::{ Direction, SyntaxNode, TextUnit, TextRange, SourceFile, AstNode, - algo::{find_leaf_at_offset, find_covering_node, LeafAtOffset}, + algo::{find_leaf_at_offset, find_node_at_offset, find_covering_node, LeafAtOffset}, ast::{self, AstToken}, }; use itertools::Itertools; -use crate::find_node_at_offset; - pub use self::{ flip_comma::flip_comma, add_derive::add_derive, diff --git a/crates/ra_editor/src/lib.rs b/crates/ra_editor/src/lib.rs index 6731260a31a..5a6af19b7cf 100644 --- a/crates/ra_editor/src/lib.rs +++ b/crates/ra_editor/src/lib.rs @@ -120,10 +120,6 @@ pub fn syntax_tree(file: &SourceFile) -> String { ::ra_syntax::utils::dump_tree(file.syntax()) } -pub fn find_node_at_offset(syntax: &SyntaxNode, offset: TextUnit) -> Option<&N> { - find_leaf_at_offset(syntax, offset).find_map(|leaf| leaf.ancestors().find_map(N::cast)) -} - #[cfg(test)] mod tests { use ra_syntax::AstNode; diff --git a/crates/ra_editor/src/typing.rs b/crates/ra_editor/src/typing.rs index 5b260d2ac74..576caf6bec8 100644 --- a/crates/ra_editor/src/typing.rs +++ b/crates/ra_editor/src/typing.rs @@ -2,7 +2,7 @@ use std::mem; use itertools::Itertools; use ra_syntax::{ - algo::{find_covering_node, find_leaf_at_offset, LeafAtOffset}, + algo::{find_node_at_offset, find_covering_node, find_leaf_at_offset, LeafAtOffset}, ast, text_utils::intersect, AstNode, Direction, SourceFile, SyntaxKind, @@ -11,7 +11,7 @@ use ra_syntax::{ }; use ra_text_edit::text_utils::contains_offset_nonstrict; -use crate::{find_node_at_offset, LocalEdit, TextEditBuilder}; +use crate::{LocalEdit, TextEditBuilder}; pub fn join_lines(file: &SourceFile, range: TextRange) -> LocalEdit { let range = if range.is_empty() { diff --git a/crates/ra_hir/src/code_model_impl/function/scope.rs b/crates/ra_hir/src/code_model_impl/function/scope.rs index 699784f71fe..ebf6edc1bae 100644 --- a/crates/ra_hir/src/code_model_impl/function/scope.rs +++ b/crates/ra_hir/src/code_model_impl/function/scope.rs @@ -308,8 +308,7 @@ pub struct ReferenceDescriptor { #[cfg(test)] mod tests { - use ra_editor::find_node_at_offset; - use ra_syntax::SourceFile; + use ra_syntax::{SourceFile, algo::find_node_at_offset}; use test_utils::{extract_offset, assert_eq_text}; use crate::expr; diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index 59a80376181..4b0400cd08c 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs @@ -6,10 +6,10 @@ /// So, this modules should not be used during hir construction, it exists /// purely for "IDE needs". use ra_db::{FileId, FilePosition, Cancelable}; -use ra_editor::find_node_at_offset; use ra_syntax::{ SmolStr, TextRange, SyntaxNode, ast::{self, AstNode, NameOwner}, + algo::find_node_at_offset, }; use crate::{ diff --git a/crates/ra_syntax/src/algo.rs b/crates/ra_syntax/src/algo.rs index 13f50d2ef80..2826ec7f231 100644 --- a/crates/ra_syntax/src/algo.rs +++ b/crates/ra_syntax/src/algo.rs @@ -2,7 +2,7 @@ pub mod visit; use rowan::TransparentNewType; -use crate::{SyntaxNode, TextRange, TextUnit}; +use crate::{SyntaxNode, TextRange, TextUnit, AstNode}; pub use rowan::LeafAtOffset; @@ -16,6 +16,10 @@ pub fn find_leaf_at_offset(node: &SyntaxNode, offset: TextUnit) -> LeafAtOffset< } } +pub fn find_node_at_offset(syntax: &SyntaxNode, offset: TextUnit) -> Option<&N> { + find_leaf_at_offset(syntax, offset).find_map(|leaf| leaf.ancestors().find_map(N::cast)) +} + pub fn find_covering_node(root: &SyntaxNode, range: TextRange) -> &SyntaxNode { SyntaxNode::from_repr(root.0.covering_node(range)) }