From ed7ae78c6fd9e508f6e959c6a164cf8481f6b377 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 17 Aug 2018 19:54:08 +0300 Subject: ServerWorld --- crates/libeditor/src/code_actions.rs | 10 ++++------ crates/libeditor/tests/test.rs | 8 +++++--- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'crates/libeditor') diff --git a/crates/libeditor/src/code_actions.rs b/crates/libeditor/src/code_actions.rs index 6df64be12..4b2515835 100644 --- a/crates/libeditor/src/code_actions.rs +++ b/crates/libeditor/src/code_actions.rs @@ -71,13 +71,11 @@ fn non_trivia_sibling(node: SyntaxNodeRef, direction: Direction) -> Option Option { - find_leaf_at_offset(syntax, offset) - .find(|leaf| !leaf.kind().is_trivia()) -} - pub fn find_node<'a, N: AstNode<&'a SyntaxRoot>>(syntax: SyntaxNodeRef<'a>, offset: TextUnit) -> Option { - let leaf = find_non_trivia_leaf(syntax, offset)?; + let leaves = find_leaf_at_offset(syntax, offset); + let leaf = leaves.clone() + .find(|leaf| !leaf.kind().is_trivia()) + .or_else(|| leaves.right_biased())?; ancestors(leaf) .filter_map(N::cast) .next() diff --git a/crates/libeditor/tests/test.rs b/crates/libeditor/tests/test.rs index df4cb65d1..cc4226710 100644 --- a/crates/libeditor/tests/test.rs +++ b/crates/libeditor/tests/test.rs @@ -1,11 +1,8 @@ extern crate libeditor; extern crate libsyntax2; -extern crate itertools; #[macro_use] extern crate assert_eq_text; -use std::fmt; -use itertools::Itertools; use assert_eq_text::{assert_eq_dbg}; use libeditor::{ File, TextUnit, TextRange, ActionResult, CursorPosition, @@ -118,6 +115,11 @@ fn test_add_derive() { "#[derive(<|>)]\nstruct Foo { a: i32, }", |file, off| add_derive(file, off).map(|f| f()), ); + check_action( + "struct Foo { <|> a: i32, }", + "#[derive(<|>)]\nstruct Foo { a: i32, }", + |file, off| add_derive(file, off).map(|f| f()), + ); check_action( "#[derive(Clone)]\nstruct Foo { a: i32<|>, }", "#[derive(Clone<|>)]\nstruct Foo { a: i32, }", -- cgit v1.2.3