about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOliver Schneider <github35764891676564198441@oli-obk.de>2018-06-15 01:26:56 +0200
committerOliver Schneider <github35764891676564198441@oli-obk.de>2018-06-28 11:01:35 +0200
commit58fdac638ea57f60bb2bea4b35f8fc5988df9387 (patch)
treedaa59359d84fc1d87f753fcd0901b95004303eae /src
parentba196bdcb10736da5d14c961bd8962d80e300913 (diff)
downloadrust-58fdac638ea57f60bb2bea4b35f8fc5988df9387.tar.gz
rust-58fdac638ea57f60bb2bea4b35f8fc5988df9387.zip
Simplify const error reporting
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/const_val.rs17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/librustc/middle/const_val.rs b/src/librustc/middle/const_val.rs
index 2fa77be644e..8a824c66ec4 100644
--- a/src/librustc/middle/const_val.rs
+++ b/src/librustc/middle/const_val.rs
@@ -93,14 +93,14 @@ impl<'a, 'gcx, 'tcx> ConstEvalErr<'tcx> {
         message: &str)
         -> Option<DiagnosticBuilder<'tcx>>
     {
-        self.struct_generic(tcx, message, None, true)
+        self.struct_generic(tcx, message, None)
     }
 
     pub fn report_as_error(&self,
         tcx: TyCtxtAt<'a, 'gcx, 'tcx>,
         message: &str
     ) {
-        let err = self.struct_generic(tcx, message, None, true);
+        let err = self.struct_generic(tcx, message, None);
         if let Some(mut err) = err {
             err.emit();
         }
@@ -115,7 +115,6 @@ impl<'a, 'gcx, 'tcx> ConstEvalErr<'tcx> {
             tcx,
             message,
             Some(lint_root),
-            false,
         );
         if let Some(mut lint) = lint {
             lint.emit();
@@ -127,7 +126,6 @@ impl<'a, 'gcx, 'tcx> ConstEvalErr<'tcx> {
         tcx: TyCtxtAt<'a, 'gcx, 'tcx>,
         message: &str,
         lint_root: Option<ast::NodeId>,
-        as_err: bool,
     ) -> Option<DiagnosticBuilder<'tcx>> {
         let (msg, frames): (_, &[_]) = match *self.kind {
             ErrKind::TypeckError | ErrKind::CheckMatchError => return None,
@@ -136,7 +134,7 @@ impl<'a, 'gcx, 'tcx> ConstEvalErr<'tcx> {
                     ::mir::interpret::EvalErrorKind::TypeckError |
                     ::mir::interpret::EvalErrorKind::Layout(_) => return None,
                     ::mir::interpret::EvalErrorKind::ReferencedConstant(ref inner) => {
-                        inner.struct_generic(tcx, "referenced constant", lint_root, as_err)?.emit();
+                        inner.struct_generic(tcx, "referenced constant", lint_root)?.emit();
                         (miri.to_string(), frames)
                     },
                     _ => (miri.to_string(), frames),
@@ -145,22 +143,21 @@ impl<'a, 'gcx, 'tcx> ConstEvalErr<'tcx> {
             _ => (self.description().into_oneline().to_string(), &[]),
         };
         trace!("reporting const eval failure at {:?}", self.span);
-        let mut err = if as_err {
-            struct_error(tcx, message)
-        } else {
+        let mut err = if let Some(lint_root) = lint_root {
             let node_id = frames
                 .iter()
                 .rev()
                 .filter_map(|frame| frame.lint_root)
                 .next()
-                .or(lint_root)
-                .expect("some part of a failing const eval must be local");
+                .unwrap_or(lint_root);
             tcx.struct_span_lint_node(
                 ::rustc::lint::builtin::CONST_ERR,
                 node_id,
                 tcx.span,
                 message,
             )
+        } else {
+            struct_error(tcx, message)
         };
         err.span_label(self.span, msg);
         for FrameInfo { span, location, .. } in frames {