diff options
Diffstat (limited to 'crates/ra_ide/src/typing.rs')
-rw-r--r-- | crates/ra_ide/src/typing.rs | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/crates/ra_ide/src/typing.rs b/crates/ra_ide/src/typing.rs index 6f04f0be4..cd48cad93 100644 --- a/crates/ra_ide/src/typing.rs +++ b/crates/ra_ide/src/typing.rs | |||
@@ -82,7 +82,6 @@ fn on_eq_typed(file: &SourceFile, offset: TextSize) -> Option<SingleFileChange> | |||
82 | Some(SingleFileChange { | 82 | Some(SingleFileChange { |
83 | label: "add semicolon".to_string(), | 83 | label: "add semicolon".to_string(), |
84 | edit: TextEdit::insert(offset, ";".to_string()), | 84 | edit: TextEdit::insert(offset, ";".to_string()), |
85 | cursor_position: None, | ||
86 | }) | 85 | }) |
87 | } | 86 | } |
88 | 87 | ||
@@ -111,7 +110,6 @@ fn on_dot_typed(file: &SourceFile, offset: TextSize) -> Option<SingleFileChange> | |||
111 | Some(SingleFileChange { | 110 | Some(SingleFileChange { |
112 | label: "reindent dot".to_string(), | 111 | label: "reindent dot".to_string(), |
113 | edit: TextEdit::replace(TextRange::new(offset - current_indent_len, offset), target_indent), | 112 | edit: TextEdit::replace(TextRange::new(offset - current_indent_len, offset), target_indent), |
114 | cursor_position: Some(offset + target_indent_len - current_indent_len + TextSize::of('.')), | ||
115 | }) | 113 | }) |
116 | } | 114 | } |
117 | 115 | ||
@@ -130,7 +128,6 @@ fn on_arrow_typed(file: &SourceFile, offset: TextSize) -> Option<SingleFileChang | |||
130 | Some(SingleFileChange { | 128 | Some(SingleFileChange { |
131 | label: "add space after return type".to_string(), | 129 | label: "add space after return type".to_string(), |
132 | edit: TextEdit::insert(after_arrow, " ".to_string()), | 130 | edit: TextEdit::insert(after_arrow, " ".to_string()), |
133 | cursor_position: Some(after_arrow), | ||
134 | }) | 131 | }) |
135 | } | 132 | } |
136 | 133 | ||
@@ -140,7 +137,7 @@ mod tests { | |||
140 | 137 | ||
141 | use super::*; | 138 | use super::*; |
142 | 139 | ||
143 | fn do_type_char(char_typed: char, before: &str) -> Option<(String, SingleFileChange)> { | 140 | fn do_type_char(char_typed: char, before: &str) -> Option<String> { |
144 | let (offset, before) = extract_offset(before); | 141 | let (offset, before) = extract_offset(before); |
145 | let edit = TextEdit::insert(offset, char_typed.to_string()); | 142 | let edit = TextEdit::insert(offset, char_typed.to_string()); |
146 | let mut before = before.to_string(); | 143 | let mut before = before.to_string(); |
@@ -148,21 +145,15 @@ mod tests { | |||
148 | let parse = SourceFile::parse(&before); | 145 | let parse = SourceFile::parse(&before); |
149 | on_char_typed_inner(&parse.tree(), offset, char_typed).map(|it| { | 146 | on_char_typed_inner(&parse.tree(), offset, char_typed).map(|it| { |
150 | it.edit.apply(&mut before); | 147 | it.edit.apply(&mut before); |
151 | (before.to_string(), it) | 148 | before.to_string() |
152 | }) | 149 | }) |
153 | } | 150 | } |
154 | 151 | ||
155 | fn type_char(char_typed: char, before: &str, after: &str) { | 152 | fn type_char(char_typed: char, before: &str, after: &str) { |
156 | let (actual, file_change) = do_type_char(char_typed, before) | 153 | let actual = do_type_char(char_typed, before) |
157 | .unwrap_or_else(|| panic!("typing `{}` did nothing", char_typed)); | 154 | .unwrap_or_else(|| panic!("typing `{}` did nothing", char_typed)); |
158 | 155 | ||
159 | if after.contains("<|>") { | 156 | assert_eq_text!(after, &actual); |
160 | let (offset, after) = extract_offset(after); | ||
161 | assert_eq_text!(&after, &actual); | ||
162 | assert_eq!(file_change.cursor_position, Some(offset)) | ||
163 | } else { | ||
164 | assert_eq_text!(after, &actual); | ||
165 | } | ||
166 | } | 157 | } |
167 | 158 | ||
168 | fn type_char_noop(char_typed: char, before: &str) { | 159 | fn type_char_noop(char_typed: char, before: &str) { |
@@ -350,6 +341,6 @@ fn foo() { | |||
350 | 341 | ||
351 | #[test] | 342 | #[test] |
352 | fn adds_space_after_return_type() { | 343 | fn adds_space_after_return_type() { |
353 | type_char('>', "fn foo() -<|>{ 92 }", "fn foo() -><|> { 92 }") | 344 | type_char('>', "fn foo() -<|>{ 92 }", "fn foo() -> { 92 }") |
354 | } | 345 | } |
355 | } | 346 | } |