about summary refs log tree commit diff
path: root/src/libproc_macro
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2018-04-21 21:33:20 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2018-07-20 00:15:11 +0300
commitc0adb05d340a69f416b98a7daa663188a3a5be0f (patch)
tree86aae996ecd64f2de416097c8c297afcc5c82189 /src/libproc_macro
parent11864c4e6cbf9f76ba8589c251908a73c6d9277b (diff)
downloadrust-c0adb05d340a69f416b98a7daa663188a3a5be0f.tar.gz
rust-c0adb05d340a69f416b98a7daa663188a3a5be0f.zip
proc_macro: don't use DiagnosticBuilder for building up Diagnostics.
Diffstat (limited to 'src/libproc_macro')
-rw-r--r--src/libproc_macro/diagnostic.rs46
1 files changed, 21 insertions, 25 deletions
diff --git a/src/libproc_macro/diagnostic.rs b/src/libproc_macro/diagnostic.rs
index 06939a9d1e1..d178f03ad96 100644
--- a/src/libproc_macro/diagnostic.rs
+++ b/src/libproc_macro/diagnostic.rs
@@ -10,7 +10,8 @@
 
 use Span;
 
-use rustc_errors as rustc;
+use rustc_errors as errors;
+use syntax_pos::MultiSpan;
 
 /// An enum representing a diagnostic level.
 #[unstable(feature = "proc_macro_diagnostic", issue = "38356")]
@@ -97,37 +98,32 @@ impl Diagnostic {
     /// Emit the diagnostic.
     #[unstable(feature = "proc_macro_diagnostic", issue = "38356")]
     pub fn emit(self) {
-        ::__internal::with_sess(move |sess, _| {
-            let handler = &sess.span_diagnostic;
-            let level = __internal::level_to_internal_level(self.level);
-            let mut diag = rustc::DiagnosticBuilder::new(handler, level, &*self.message);
+        let level = self.level.to_internal();
+        let mut diag = errors::Diagnostic::new(level, &*self.message);
 
-            if let Some(span) = self.span {
-                diag.set_span(span.0);
-            }
+        if let Some(span) = self.span {
+            diag.set_span(span.0);
+        }
 
-            for child in self.children {
-                let span = child.span.map(|s| s.0);
-                let level = __internal::level_to_internal_level(child.level);
-                diag.sub(level, &*child.message, span);
-            }
+        for child in self.children {
+            let span = child.span.map_or(MultiSpan::new(), |s| s.0.into());
+            let level = child.level.to_internal();
+            diag.sub(level, &*child.message, span, None);
+        }
 
-            diag.emit();
+        ::__internal::with_sess(move |sess, _| {
+            errors::DiagnosticBuilder::new_diagnostic(&sess.span_diagnostic, diag).emit();
         });
     }
 }
 
-#[unstable(feature = "proc_macro_internals", issue = "27812")]
-#[doc(hidden)]
-pub mod __internal {
-    use super::{Level, rustc};
-
-    pub fn level_to_internal_level(level: Level) -> rustc::Level {
-        match level {
-            Level::Error => rustc::Level::Error,
-            Level::Warning => rustc::Level::Warning,
-            Level::Note => rustc::Level::Note,
-            Level::Help => rustc::Level::Help,
+impl Level {
+    fn to_internal(self) -> errors::Level {
+        match self {
+            Level::Error => errors::Level::Error,
+            Level::Warning => errors::Level::Warning,
+            Level::Note => errors::Level::Note,
+            Level::Help => errors::Level::Help,
             Level::__Nonexhaustive => unreachable!("Level::__Nonexhaustive")
         }
     }