diff options
| author | Corey Farwell <coreyf@rwell.org> | 2017-06-03 01:00:54 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-03 01:00:54 -0400 |
| commit | bef8fbd6db4ba1edf3f4cfbcf5dacb62a4b8c933 (patch) | |
| tree | a78da2ce6d67731e5c5af007c93e99cb92e04108 /src/libsyntax | |
| parent | 25bbbb31198a60369d00b333162c1406dc13bac3 (diff) | |
| parent | 4142d7bb890b631bae5d7872dce3e1c1a6816e9f (diff) | |
| download | rust-bef8fbd6db4ba1edf3f4cfbcf5dacb62a4b8c933.tar.gz rust-bef8fbd6db4ba1edf3f4cfbcf5dacb62a4b8c933.zip | |
Rollup merge of #42368 - estebank:call-site, r=nikomatsakis
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.
```
error[E0308]: mismatched types
--> $DIR/coerce-suggestions.rs:48:9
|
48 | s = format!("foo");
| ^^^^^^^^^^^^^^ expected mutable reference, found struct `std::string::String`
|
= note: expected type `&mut std::string::String`
found type `std::string::String`
= help: try with `&mut format!("foo")`
= note: this error originates in a macro outside of the current crate
```
Fix #41858.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/codemap.rs | 9 |
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)] |
