Skip to content

Commit 6bea619

Browse files
committed
Fix range for postfix snippets
1 parent 8cc4210 commit 6bea619

File tree

1 file changed

+63
-2
lines changed

1 file changed

+63
-2
lines changed

crates/ra_ide/src/completion/complete_postfix.rs

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
6767

6868
fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder {
6969
let edit = {
70-
let receiver_range =
71-
ctx.dot_receiver.as_ref().expect("no receiver available").syntax().text_range();
70+
let receiver_syntax = ctx.dot_receiver.as_ref().expect("no receiver available").syntax();
71+
let receiver_range = ctx.sema.original_range(receiver_syntax).range;
7272
let delete_range = TextRange::from_to(receiver_range.start(), ctx.source_range().end());
7373
TextEdit::replace(delete_range, snippet.to_string())
7474
};
@@ -279,4 +279,65 @@ mod tests {
279279
"###
280280
);
281281
}
282+
283+
#[test]
284+
fn works_in_simple_macro() {
285+
assert_debug_snapshot!(
286+
do_postfix_completion(
287+
r#"
288+
macro_rules! m { ($e:expr) => { $e } }
289+
fn main() {
290+
let bar: u8 = 12;
291+
m!(bar.b<|>)
292+
}
293+
"#,
294+
),
295+
@r###"
296+
[
297+
CompletionItem {
298+
label: "box",
299+
source_range: [149; 150),
300+
delete: [145; 150),
301+
insert: "Box::new(bar)",
302+
detail: "Box::new(expr)",
303+
},
304+
CompletionItem {
305+
label: "dbg",
306+
source_range: [149; 150),
307+
delete: [145; 150),
308+
insert: "dbg!(bar)",
309+
detail: "dbg!(expr)",
310+
},
311+
CompletionItem {
312+
label: "match",
313+
source_range: [149; 150),
314+
delete: [145; 150),
315+
insert: "match bar {\n ${1:_} => {$0\\},\n}",
316+
detail: "match expr {}",
317+
},
318+
CompletionItem {
319+
label: "not",
320+
source_range: [149; 150),
321+
delete: [145; 150),
322+
insert: "!bar",
323+
detail: "!expr",
324+
},
325+
CompletionItem {
326+
label: "ref",
327+
source_range: [149; 150),
328+
delete: [145; 150),
329+
insert: "&bar",
330+
detail: "&expr",
331+
},
332+
CompletionItem {
333+
label: "refm",
334+
source_range: [149; 150),
335+
delete: [145; 150),
336+
insert: "&mut bar",
337+
detail: "&mut expr",
338+
},
339+
]
340+
"###
341+
);
342+
}
282343
}

0 commit comments

Comments
 (0)