Skip to content

Commit

Permalink
Fix changes for E0106, E0261
Browse files Browse the repository at this point in the history
Replaced impl block dock with suggested one and made sure that blocks compile.
  • Loading branch information
purple-ice authored Jan 4, 2019
1 parent c738e60 commit adadefd
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions src/librustc/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -362,9 +362,9 @@ struct Foo1 { x: &bool }
// ^ expected lifetime parameter
struct Foo2<'a> { x: &'a bool } // correct
impl Foo2 { ... }
impl Foo2 {}
// ^ expected lifetime parameter
impl<'a> Foo2<'a> { ... } // correct
impl<'a> Foo2<'a> {} // correct
struct Bar1 { x: Foo2 }
// ^^^^ expected lifetime parameter
Expand Down Expand Up @@ -777,21 +777,32 @@ struct Foo<'a> {
}
```
Implementations need their own lifetime declarations:
Impl blocks declare lifetime parameters separately. You need to add lifetime
parameters to an impl block if you're implementing a type that has a lifetime
parameter of its own.
For example:
```
// error, undeclared lifetime
```compile_fail,E0261
// error, use of undeclared lifetime name `'a`
impl Foo<'a> {
...
fn foo<'a>(x: &'a str) {}
}
struct Foo<'a> {
x: &'a str,
}
```
Which are declared like this:
This is fixed by declaring impl block like this:
```
// correct
impl<'a> Foo<'a> {
...
fn foo(x: &'a str) {}
}
struct Foo<'a> {
x: &'a str,
}
```
"##,
Expand Down

0 comments on commit adadefd

Please sign in to comment.