From edeec6a41487e6458a9d96b328c9b784525d8f06 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 21 Nov 2018 18:34:20 +0300 Subject: Complete paths after :: --- crates/ra_analysis/src/completion/mod.rs | 2 +- crates/ra_analysis/src/descriptors/module/mod.rs | 1 + crates/ra_editor/src/lib.rs | 7 +------ crates/ra_syntax/src/grammar/items/mod.rs | 2 +- crates/ra_syntax/src/grammar/paths.rs | 2 +- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/crates/ra_analysis/src/completion/mod.rs b/crates/ra_analysis/src/completion/mod.rs index 8034060de..c7717ab61 100644 --- a/crates/ra_analysis/src/completion/mod.rs +++ b/crates/ra_analysis/src/completion/mod.rs @@ -224,7 +224,7 @@ mod tests { fn test_completion_self_path() { check_scope_completion( r" - use self::m::B<|>; + use self::m::<|>; mod m { struct Bar; diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs index a7e41e3db..acc6c1c5a 100644 --- a/crates/ra_analysis/src/descriptors/module/mod.rs +++ b/crates/ra_analysis/src/descriptors/module/mod.rs @@ -110,6 +110,7 @@ impl ModuleDescriptor { } /// `name` is `None` for the crate's root module + #[allow(unused)] pub fn name(&self) -> Option { let link = self.module_id.parent_link(&self.tree)?; Some(link.name(&self.tree)) diff --git a/crates/ra_editor/src/lib.rs b/crates/ra_editor/src/lib.rs index ff4e8303d..c6b116159 100644 --- a/crates/ra_editor/src/lib.rs +++ b/crates/ra_editor/src/lib.rs @@ -148,12 +148,7 @@ pub fn find_node_at_offset<'a, N: AstNode<'a>>( syntax: SyntaxNodeRef<'a>, offset: TextUnit, ) -> Option { - let leaves = find_leaf_at_offset(syntax, offset); - let leaf = leaves - .clone() - .find(|leaf| !leaf.kind().is_trivia()) - .or_else(|| leaves.right_biased())?; - leaf.ancestors().filter_map(N::cast).next() + find_leaf_at_offset(syntax, offset).find_map(|leaf| leaf.ancestors().find_map(N::cast)) } #[cfg(test)] diff --git a/crates/ra_syntax/src/grammar/items/mod.rs b/crates/ra_syntax/src/grammar/items/mod.rs index 06c6b5e6e..682266908 100644 --- a/crates/ra_syntax/src/grammar/items/mod.rs +++ b/crates/ra_syntax/src/grammar/items/mod.rs @@ -29,7 +29,7 @@ pub(super) enum ItemFlavor { Trait, } -const ITEM_RECOVERY_SET: TokenSet = token_set![ +pub(super) const ITEM_RECOVERY_SET: TokenSet = token_set![ FN_KW, STRUCT_KW, ENUM_KW, IMPL_KW, TRAIT_KW, CONST_KW, STATIC_KW, LET_KW, MOD_KW, PUB_KW, CRATE_KW ]; diff --git a/crates/ra_syntax/src/grammar/paths.rs b/crates/ra_syntax/src/grammar/paths.rs index a35a339cc..33a11886c 100644 --- a/crates/ra_syntax/src/grammar/paths.rs +++ b/crates/ra_syntax/src/grammar/paths.rs @@ -78,7 +78,7 @@ fn path_segment(p: &mut Parser, mode: Mode, first: bool) { // use crate::foo; SELF_KW | SUPER_KW | CRATE_KW => p.bump(), _ => { - p.err_and_bump("expected identifier"); + p.err_recover("expected identifier", items::ITEM_RECOVERY_SET); } }; } -- cgit v1.2.3