From 52d0e514731f185026d0fdf7807cb97ab9f60218 Mon Sep 17 00:00:00 2001 From: Virgil Palanciuc Date: Thu, 26 Oct 2017 09:34:39 -0700 Subject: [PATCH] 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) --- src/librustc/middle/stability.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index d83560963f76..0d946c3bbcd6 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); } }