summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2017-05-31 23:48:19 -0700
committerEsteban Küber <esteban@kuber.com.ar>2017-05-31 23:48:19 -0700
commit4142d7bb890b631bae5d7872dce3e1c1a6816e9f (patch)
treef72b559e7103bc886e7a036bb4a1806f2611aaf8 /src/libsyntax
parent4ed2edaafe82fb8d44e81e00ca3e4f7659855ba2 (diff)
downloadrust-4142d7bb890b631bae5d7872dce3e1c1a6816e9f.tar.gz
rust-4142d7bb890b631bae5d7872dce3e1c1a6816e9f.zip
Use callsite's span for macro calls on suggestion
When suggesting an appropriate mutability for a macro call, use the call
span instead of the expanded macro's span.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/codemap.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs
index bbe5bd4a10c..830a457df74 100644
--- a/src/libsyntax/codemap.rs
+++ b/src/libsyntax/codemap.rs
@@ -563,6 +563,15 @@ impl CodeMapper for CodeMap {
     fn merge_spans(&self, sp_lhs: Span, sp_rhs: Span) -> Option<Span> {
         self.merge_spans(sp_lhs, sp_rhs)
     }
+    fn call_span_if_macro(&self, sp: Span) -> Span {
+        if self.span_to_filename(sp.clone()).contains("macros>") {
+            let v = sp.macro_backtrace();
+            if let Some(use_site) = v.last() {
+                return use_site.call_site;
+            }
+        }
+        sp
+    }
 }
 
 #[derive(Clone)]