diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index e9319e29555d5..af741476feb78 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -4177,7 +4177,9 @@ pub fn type_err_to_str<'tcx>(cx: &ctxt<'tcx>, err: &type_err<'tcx>) -> String { if expected_str == found_str { format!("expected {}, found a different {}", expected_str, found_str) } else { - format!("expected {}, found {}", expected_str, found_str) + format!("expected `{}`,\n found `{}`", expected_str, found_str) + // `expected` will be preceded by either a space or a `(` so the following + // line needs 4 spaces to align both `{}` sets: issue 18946 } } terr_traits(values) => { diff --git a/src/librustc/middle/typeck/infer/error_reporting.rs b/src/librustc/middle/typeck/infer/error_reporting.rs index bc36a2bd801b4..f8289867c353d 100644 --- a/src/librustc/middle/typeck/infer/error_reporting.rs +++ b/src/librustc/middle/typeck/infer/error_reporting.rs @@ -372,7 +372,8 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> { self.tcx.sess.span_err( trace.origin.span(), - format!("{}: {} ({})", + format!("{}:\n {}\n({})", + // ^ Space to align both sets of `{}`: issue 18946 message_root_str, expected_found_str, ty::type_err_to_str(self.tcx, terr)).as_slice()); @@ -417,7 +418,9 @@ impl<'a, 'tcx> ErrorReporting<'tcx> for InferCtxt<'a, 'tcx> { return None; } - Some(format!("expected `{}`, found `{}`", + Some(format!("expected `{}`,\n found `{}`", + // `expected` will be preceded by either a space or a `(` so the + // following line needs 4 spaces to align both `{}` sets: issue 18946 expected.user_string(self.tcx), found.user_string(self.tcx))) }