From 604bdc6ffeea69dffed6d03f10b2fd4e05d04cda Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Tue, 5 Nov 2019 02:09:16 +0800 Subject: Use macro_rules shift to map text ranges --- crates/ra_hir_expand/src/db.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'crates/ra_hir_expand') diff --git a/crates/ra_hir_expand/src/db.rs b/crates/ra_hir_expand/src/db.rs index 8369c2b40..72c728c93 100644 --- a/crates/ra_hir_expand/src/db.rs +++ b/crates/ra_hir_expand/src/db.rs @@ -151,10 +151,15 @@ pub(crate) fn parse_macro_with_info( let arg_start = arg_tt.map(|t| t.syntax().text_range().start()); let def_start = def_tt.map(|t| t.syntax().text_range().start()); - let arg_map = - arg_start.map(|start| exp_map.ranges(&expand_info.arg_map, start)).unwrap_or_default(); - let def_map = - def_start.map(|start| exp_map.ranges(&expand_info.def_map, start)).unwrap_or_default(); + let macro_rules = db.macro_def(loc.def).ok_or("Fail to find macro definition").ok()?.0; + let shift = macro_rules.shift(); + + let arg_map = arg_start + .map(|start| exp_map.map_ranges(&expand_info.arg_map, start, shift)) + .unwrap_or_default(); + let def_map = def_start + .map(|start| exp_map.map_ranges(&expand_info.def_map, start, 0)) + .unwrap_or_default(); let info = ExpansionInfo { arg_map, def_map }; -- cgit v1.2.3