diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2015-12-09 16:07:30 +0100 |
|---|---|---|
| committer | ggomez <ggomez@ggo.ifr.lan> | 2015-12-09 16:25:17 +0100 |
| commit | 1671af139485d263ff7b63fc25b0ed7f833b030e (patch) | |
| tree | 874dcece9d9d3fe704e89026228968e83467f535 | |
| parent | 2e48b593ca613c5deea5503e0dd1d94dce70ab54 (diff) | |
| download | rust-1671af139485d263ff7b63fc25b0ed7f833b030e.tar.gz rust-1671af139485d263ff7b63fc25b0ed7f833b030e.zip | |
Add E0269 error explanation
| -rw-r--r-- | src/librustc/diagnostics.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 86dd363993a..cde8e7a6d1e 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -989,6 +989,41 @@ enum Method { GET, POST } ``` "##, +E0229: r##" +An associated type binding was done outside of the type parameter declaration +and `where` clause. Erroneous code example: + +``` +pub trait Foo { + type A; + fn boo(&self) -> <Self as Foo>::A; +} + +struct Bar; + +impl Foo for isize { + type A = usize; + fn boo(&self) -> usize { 42 } +} + +fn baz<I>(x: &<I as Foo<A=Bar>>::A) {} +// error: associated type bindings are not allowed here +``` + +To solve this error, please move the type bindings in the type parameter +declaration: + +``` +fn baz<I: Foo<A=Bar>>(x: &<I as Foo>::A) {} // ok! +``` + +or in the `where` clause: + +``` +fn baz<I>(x: &<I as Foo>::A) where I: Foo<A=Bar> {} +``` +"##, + E0261: r##" When using a lifetime like `'a` in a type, it must be declared before being used. @@ -2241,7 +2276,6 @@ register_diagnostics! { // E0006 // merged with E0005 // E0134, // E0135, - E0229, // associated type bindings are not allowed here E0278, // requirement is not satisfied E0279, // requirement is not satisfied E0280, // requirement is not satisfied |
