X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc%2Fty%2Ferror.rs;h=09426fe19e11eac2c21991aae10fc21dd6c9dc01;hb=20f462d9fcb62ecd52f77e61dad8af4d7d2c1229;hp=74d0a29bcff00df8b600b5fcf0338032748be070;hpb=d91b32b4dc9db066ab7deedbc51dc62ba597524b;p=rust.git diff --git a/src/librustc/ty/error.rs b/src/librustc/ty/error.rs index 74d0a29bcff..09426fe19e1 100644 --- a/src/librustc/ty/error.rs +++ b/src/librustc/ty/error.rs @@ -44,6 +44,8 @@ pub enum TypeError<'tcx> { ProjectionMismatched(ExpectedFound), ProjectionBoundsLength(ExpectedFound), ExistentialMismatch(ExpectedFound<&'tcx ty::List>>), + + ConstMismatch(ExpectedFound<&'tcx ty::Const<'tcx>>), } #[derive(Clone, RustcEncodable, RustcDecodable, PartialEq, Eq, Hash, Debug, Copy)] @@ -78,6 +80,12 @@ fn report_maybe_different(f: &mut fmt::Formatter<'_>, } }; + macro_rules! pluralise { + ($x:expr) => { + if $x != 1 { "s" } else { "" } + }; + } + match *self { CyclicTy(_) => write!(f, "cyclic type of infinite size"), Mismatch => write!(f, "types differ"), @@ -92,17 +100,21 @@ fn report_maybe_different(f: &mut fmt::Formatter<'_>, values.found) } Mutability => write!(f, "types differ in mutability"), - FixedArraySize(values) => { - write!(f, "expected an array with a fixed size of {} elements, \ - found one with {} elements", + TupleSize(values) => { + write!(f, "expected a tuple with {} element{}, \ + found one with {} element{}", values.expected, - values.found) + pluralise!(values.expected), + values.found, + pluralise!(values.found)) } - TupleSize(values) => { - write!(f, "expected a tuple with {} elements, \ - found one with {} elements", + FixedArraySize(values) => { + write!(f, "expected an array with a fixed size of {} element{}, \ + found one with {} element{}", values.expected, - values.found) + pluralise!(values.expected), + values.found, + pluralise!(values.found)) } ArgCount => { write!(f, "incorrect number of function parameters") @@ -155,14 +167,18 @@ fn report_maybe_different(f: &mut fmt::Formatter<'_>, tcx.def_path_str(values.found)) }), ProjectionBoundsLength(ref values) => { - write!(f, "expected {} associated type bindings, found {}", + write!(f, "expected {} associated type binding{}, found {}", values.expected, + pluralise!(values.expected), values.found) }, ExistentialMismatch(ref values) => { report_maybe_different(f, &format!("trait `{}`", values.expected), &format!("trait `{}`", values.found)) } + ConstMismatch(ref values) => { + write!(f, "expected `{}`, found `{}`", values.expected, values.found) + } } } }