diff options
| author | Virgil Palanciuc <virgilp@adobe.com> | 2017-10-26 09:34:39 -0700 |
|---|---|---|
| committer | Virgil Palanciuc <virgilp@adobe.com> | 2017-10-26 09:34:39 -0700 |
| commit | 52d0e514731f185026d0fdf7807cb97ab9f60218 (patch) | |
| tree | f22e1db055ce67a5760873139c04103574416120 | |
| parent | 4e16e30b07c24b6ae5db1269c894d618eb55b1c0 (diff) | |
| download | rust-52d0e514731f185026d0fdf7807cb97ab9f60218.tar.gz rust-52d0e514731f185026d0fdf7807cb97ab9f60218.zip | |
relax restriction - allow errors to be emmitted within macro spans, as long as the same error message has not been used before (i.e. use the None as the span key, for errors that occur within macros)
| -rw-r--r-- | src/librustc/middle/stability.rs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index d83560963f7..0d946c3bbcd 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -598,29 +598,28 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { None => format!("use of unstable library feature '{}'", &feature) }; + let msp: MultiSpan = span.into(); let cm = &self.sess.parse_sess.codemap(); - let real_file_location = + let span_key = msp.primary_span().and_then(|sp:Span| if sp != DUMMY_SP { let fname = cm.lookup_char_pos(sp.lo()).file.as_ref().name.clone(); if fname.starts_with("<") && fname.ends_with(" macros>") { None } else { - Some(fname) + Some(span) } } else { None } ); - if let Some(_) = real_file_location { - let tuple = (None, Some(span), msg.clone()); - let fresh = self.sess.one_time_diagnostics.borrow_mut().insert(tuple); - if fresh { - emit_feature_err(&self.sess.parse_sess, &feature.as_str(), span, - GateIssue::Library(Some(issue)), &msg); - } + let tuple = (None, span_key, msg.clone()); + let fresh = self.sess.one_time_diagnostics.borrow_mut().insert(tuple); + if fresh { + emit_feature_err(&self.sess.parse_sess, &feature.as_str(), span, + GateIssue::Library(Some(issue)), &msg); } } |
