@@ -67,8 +67,8 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
6767
6868fn 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