@@ -67,8 +67,8 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
67
67
68
68
fn postfix_snippet ( ctx : & CompletionContext , label : & str , detail : & str , snippet : & str ) -> Builder {
69
69
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 ;
72
72
let delete_range = TextRange :: from_to ( receiver_range. start ( ) , ctx. source_range ( ) . end ( ) ) ;
73
73
TextEdit :: replace ( delete_range, snippet. to_string ( ) )
74
74
} ;
@@ -279,4 +279,65 @@ mod tests {
279
279
"###
280
280
) ;
281
281
}
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
+ }
282
343
}
0 commit comments