From 09ffe475e70ce1b0564cf334a9eabeda008667e5 Mon Sep 17 00:00:00 2001 From: Nikhil Shagrithaya Date: Sun, 19 Jun 2016 19:33:47 +0530 Subject: [PATCH] Modified E0220 to show error messages for more general cases --- src/librustc_typeck/diagnostics.rs | 31 ++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs index c0cca08b67602..cdac66a227237 100644 --- a/src/librustc_typeck/diagnostics.rs +++ b/src/librustc_typeck/diagnostics.rs @@ -2787,23 +2787,42 @@ You used an associated type which isn't defined in the trait. Erroneous code example: ```compile_fail -trait Trait { +trait T1 { type Bar; } -type Foo = Trait; // error: associated type `F` not found for - // `Trait` +type Foo = T1; // error: associated type `F` not found for `T1` + +// or: + +trait T2 { + type Bar; + + // error: Baz is used but not declared + fn return_bool(&self, &Self::Bar, &Self::Baz) -> bool; +} ``` -Please verify you used the right trait or you didn't misspell the +Make sure that you have defined the associated type in the trait body. +Also, verify that you used the right trait or you didn't misspell the associated type name. Example: ``` -trait Trait { +trait T1 { type Bar; } -type Foo = Trait; // ok! +type Foo = T1; // ok! + +// or: + +trait T2 { + type Bar; + type Baz; // we declare `Baz` in our trait. + + // and now we can use it here: + fn return_bool(&self, &Self::Bar, &Self::Baz) -> bool; +} ``` "##,