about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2018-08-04 06:51:33 -0600
committerMark Rousskov <mark.simulacrum@gmail.com>2018-08-09 10:01:45 -0600
commita8e19bec373a0a6e673969fed2ded5ec4e53761d (patch)
tree8a2246b93e0a3b42d406ebe66d3e67c55eb49cdb /src
parented246fcc953831b50ec0fb5b26a48d0704a15ed7 (diff)
downloadrust-a8e19bec373a0a6e673969fed2ded5ec4e53761d.tar.gz
rust-a8e19bec373a0a6e673969fed2ded5ec4e53761d.zip
Move span_bug and bug helper functions to util
Diffstat (limited to 'src')
-rw-r--r--src/librustc/lib.rs1
-rw-r--r--src/librustc/macros.rs4
-rw-r--r--src/librustc/session/mod.rs38
-rw-r--r--src/librustc/util/bug.rs51
4 files changed, 54 insertions, 40 deletions
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index 6b00a10eaa3..55a5e342947 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -166,6 +166,7 @@ pub mod util {
     pub mod nodemap;
     pub mod time_graph;
     pub mod profiling;
+    pub mod bug;
 }
 
 // A private module so that macro-expanded idents like
diff --git a/src/librustc/macros.rs b/src/librustc/macros.rs
index 0bf1f4decc4..e599b0704f9 100644
--- a/src/librustc/macros.rs
+++ b/src/librustc/macros.rs
@@ -51,14 +51,14 @@ macro_rules! enum_from_u32 {
 macro_rules! bug {
     () => ( bug!("impossible case reached") );
     ($($message:tt)*) => ({
-        $crate::session::bug_fmt(file!(), line!(), format_args!($($message)*))
+        $crate::util::bug::bug_fmt(file!(), line!(), format_args!($($message)*))
     })
 }
 
 #[macro_export]
 macro_rules! span_bug {
     ($span:expr, $($message:tt)*) => ({
-        $crate::session::span_bug_fmt(file!(), line!(), $span, format_args!($($message)*))
+        $crate::util::bug::span_bug_fmt(file!(), line!(), $span, format_args!($($message)*))
     })
 }
 
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index c3d4d3abf9a..f474f214305 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -20,7 +20,6 @@ use middle::allocator::AllocatorKind;
 use middle::dependency_format;
 use session::search_paths::PathKind;
 use session::config::{OutputType, Lto};
-use ty::tls;
 use util::nodemap::{FxHashMap, FxHashSet};
 use util::common::{duration_to_secs_str, ErrorReported};
 use util::common::ProfileQueriesMsg;
@@ -49,7 +48,6 @@ use std;
 use std::cell::{self, Cell, RefCell};
 use std::collections::HashMap;
 use std::env;
-use std::fmt;
 use std::io::Write;
 use std::path::{Path, PathBuf};
 use std::time::Duration;
@@ -1301,39 +1299,3 @@ pub fn compile_result_from_err_count(err_count: usize) -> CompileResult {
         Err(CompileIncomplete::Errored(ErrorReported))
     }
 }
-
-#[cold]
-#[inline(never)]
-pub fn bug_fmt(file: &'static str, line: u32, args: fmt::Arguments) -> ! {
-    // this wrapper mostly exists so I don't have to write a fully
-    // qualified path of None::<Span> inside the bug!() macro definition
-    opt_span_bug_fmt(file, line, None::<Span>, args);
-}
-
-#[cold]
-#[inline(never)]
-pub fn span_bug_fmt<S: Into<MultiSpan>>(
-    file: &'static str,
-    line: u32,
-    span: S,
-    args: fmt::Arguments,
-) -> ! {
-    opt_span_bug_fmt(file, line, Some(span), args);
-}
-
-fn opt_span_bug_fmt<S: Into<MultiSpan>>(
-    file: &'static str,
-    line: u32,
-    span: Option<S>,
-    args: fmt::Arguments,
-) -> ! {
-    tls::with_opt(move |tcx| {
-        let msg = format!("{}:{}: {}", file, line, args);
-        match (tcx, span) {
-            (Some(tcx), Some(span)) => tcx.sess.diagnostic().span_bug(span, &msg),
-            (Some(tcx), None) => tcx.sess.diagnostic().bug(&msg),
-            (None, _) => panic!(msg),
-        }
-    });
-    unreachable!();
-}
diff --git a/src/librustc/util/bug.rs b/src/librustc/util/bug.rs
new file mode 100644
index 00000000000..f2593e4d4b5
--- /dev/null
+++ b/src/librustc/util/bug.rs
@@ -0,0 +1,51 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// These functions are used by macro expansion for bug! and span_bug!
+
+use ty::tls;
+use std::fmt;
+use syntax_pos::{Span, MultiSpan};
+
+#[cold]
+#[inline(never)]
+pub fn bug_fmt(file: &'static str, line: u32, args: fmt::Arguments) -> ! {
+    // this wrapper mostly exists so I don't have to write a fully
+    // qualified path of None::<Span> inside the bug!() macro definition
+    opt_span_bug_fmt(file, line, None::<Span>, args);
+}
+
+#[cold]
+#[inline(never)]
+pub fn span_bug_fmt<S: Into<MultiSpan>>(
+    file: &'static str,
+    line: u32,
+    span: S,
+    args: fmt::Arguments,
+) -> ! {
+    opt_span_bug_fmt(file, line, Some(span), args);
+}
+
+fn opt_span_bug_fmt<S: Into<MultiSpan>>(
+    file: &'static str,
+    line: u32,
+    span: Option<S>,
+    args: fmt::Arguments,
+) -> ! {
+    tls::with_opt(move |tcx| {
+        let msg = format!("{}:{}: {}", file, line, args);
+        match (tcx, span) {
+            (Some(tcx), Some(span)) => tcx.sess.diagnostic().span_bug(span, &msg),
+            (Some(tcx), None) => tcx.sess.diagnostic().bug(&msg),
+            (None, _) => panic!(msg),
+        }
+    });
+    unreachable!();
+}