From 9ed30c62143f2615f8424d9da63eef77978e3346 Mon Sep 17 00:00:00 2001 From: Alisdair Owens Date: Sat, 15 Aug 2015 10:01:26 +0100 Subject: [PATCH] add diagnostics for E0281 --- src/librustc/diagnostics.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 5f907c6cbeee8..696b38219f440 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -1487,6 +1487,26 @@ fn main() { ``` "##, +E0281: r##" +You tried to supply a type which doesn't implement some trait in a location +which expected that trait. This error typically occurs when working with +`Fn`-based types. Erroneous code example: + +``` +fn foo(x: F) { } + +fn main() { + // type mismatch: the type ... implements the trait `core::ops::Fn<(_,)>`, + // but the trait `core::ops::Fn<()>` is required (expected (), found tuple + // [E0281] + foo(|y| { }); +} +``` + +The issue in this case is that `foo` is defined as accepting a `Fn` with no +arguments, but the closure we attempted to pass to it requires one argument. +"##, + E0282: r##" This error indicates that type inference did not result in one unique possible type, and extra information is required. In most cases this can be provided @@ -1867,7 +1887,6 @@ register_diagnostics! { E0278, // requirement is not satisfied E0279, // requirement is not satisfied E0280, // requirement is not satisfied - E0281, // type implements trait but other trait is required E0283, // cannot resolve type E0284, // cannot resolve type E0285, // overflow evaluation builtin bounds