diff --git a/crates/ra_ide_api/src/join_lines.rs b/crates/ra_ide_api/src/join_lines.rs index 6e84e4b105..8fb3eaa064 100644 --- a/crates/ra_ide_api/src/join_lines.rs +++ b/crates/ra_ide_api/src/join_lines.rs @@ -1,5 +1,4 @@ use itertools::Itertools; -use ra_db::FileRange; use ra_syntax::{ SourceFile, TextRange, TextUnit, AstNode, SyntaxNode, SyntaxKind::{self, WHITESPACE, COMMA, R_CURLY, R_PAREN, R_BRACK}, @@ -12,17 +11,17 @@ use ra_fmt::{ }; use ra_text_edit::{TextEdit, TextEditBuilder}; -pub fn join_lines(file: &SourceFile, frange: FileRange) -> TextEdit { - let range = if frange.range.is_empty() { +pub fn join_lines(file: &SourceFile, range: TextRange) -> TextEdit { + let range = if range.is_empty() { let syntax = file.syntax(); - let text = syntax.text().slice(frange.range.start()..); + let text = syntax.text().slice(range.start()..); let pos = match text.find('\n') { None => return TextEditBuilder::default().finish(), Some(pos) => pos, }; - TextRange::offset_len(frange.range.start() + pos, TextUnit::of_char('\n')) + TextRange::offset_len(range.start() + pos, TextUnit::of_char('\n')) } else { - frange.range + range }; let node = find_covering_node(file.syntax(), range); @@ -507,7 +506,7 @@ fn foo() { let (sel, before) = extract_range(before); let file = SourceFile::parse(&before); let result = join_lines(&file, sel); - let actual = result.edit.apply(&before); + let actual = result.apply(&before); assert_eq_text!(after, &actual); } diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs index d4dba1eeb4..a838c30da7 100644 --- a/crates/ra_ide_api/src/lib.rs +++ b/crates/ra_ide_api/src/lib.rs @@ -279,8 +279,10 @@ impl Analysis { /// stuff like trailing commas. pub fn join_lines(&self, frange: FileRange) -> SourceChange { let file = self.db.parse(frange.file_id); - let file_edit = - SourceFileEdit { file_id: frange.file_id, edit: join_lines::join_lines(&file, frange) }; + let file_edit = SourceFileEdit { + file_id: frange.file_id, + edit: join_lines::join_lines(&file, frange.range), + }; SourceChange { label: "join lines".to_string(), source_file_edits: vec![file_edit], diff --git a/crates/ra_ide_api/src/test_utils.rs b/crates/ra_ide_api/src/test_utils.rs index bfac0fce36..d0bd3a1e46 100644 --- a/crates/ra_ide_api/src/test_utils.rs +++ b/crates/ra_ide_api/src/test_utils.rs @@ -1,9 +1,9 @@ use ra_syntax::{SourceFile, TextUnit}; +use ra_text_edit::TextEdit; -use crate::LocalEdit; pub use test_utils::*; -pub fn check_action Option>( +pub fn check_action Option>( before: &str, after: &str, f: F, @@ -11,14 +11,9 @@ pub fn check_action Option>( let (before_cursor_pos, before) = extract_offset(before); let file = SourceFile::parse(&before); let result = f(&file, before_cursor_pos).expect("code action is not applicable"); - let actual = result.edit.apply(&before); - let actual_cursor_pos = match result.cursor_position { - None => result - .edit - .apply_to_offset(before_cursor_pos) - .expect("cursor position is affected by the edit"), - Some(off) => off, - }; + let actual = result.apply(&before); + let actual_cursor_pos = + result.apply_to_offset(before_cursor_pos).expect("cursor position is affected by the edit"); let actual = add_cursor(&actual, actual_cursor_pos); assert_eq_text!(after, &actual); }