diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-01-12 19:25:03 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-01-12 19:25:03 -0800 |
| commit | 28ea03e11477032a29b30284487d6d73e181ecaf (patch) | |
| tree | 8c5ae05fac65d0d2ebea41edd1c79cf28eb0a29a /src/test/ui/parser | |
| parent | db740313e023c76a2b354981e352ebcf6d7d57e2 (diff) | |
Suggest correct location for lifetime parameters in use
Diffstat (limited to 'src/test/ui/parser')
| -rw-r--r-- | src/test/ui/parser/issue-14303-fncall.rs | 23 | ||||
| -rw-r--r-- | src/test/ui/parser/issue-14303-fncall.stderr | 23 | ||||
| -rw-r--r-- | src/test/ui/parser/issue-14303-path.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/parser/issue-14303-path.stderr | 14 |
4 files changed, 30 insertions, 31 deletions
diff --git a/src/test/ui/parser/issue-14303-fncall.rs b/src/test/ui/parser/issue-14303-fncall.rs index f08b847ac32..17b9b766b21 100644 --- a/src/test/ui/parser/issue-14303-fncall.rs +++ b/src/test/ui/parser/issue-14303-fncall.rs @@ -1,8 +1,17 @@ -fn main() { - (0..4) - .map(|x| x * 2) - .collect::<Vec<'a, usize, 'b>>() - //~^ ERROR lifetime parameters must be declared prior to type parameters - //~| ERROR use of undeclared lifetime name - //~| ERROR use of undeclared lifetime name +// can't run rustfix because it doesn't handle multipart suggestions correctly +// compile-flags: -Zborrowck=mir +// we need the above to avoid ast borrowck failure in recovered code + +struct S<'a, T> { + a: &'a T, + b: &'a T, } + +fn foo<'a, 'b>(start: &'a usize, end: &'a usize) { + let _x = (*start..*end) + .map(|x| S { a: start, b: end }) + .collect::<Vec<S<_, 'a>>>(); + //~^ ERROR lifetime parameters must be declared prior to type parameters +} + +fn main() {} diff --git a/src/test/ui/parser/issue-14303-fncall.stderr b/src/test/ui/parser/issue-14303-fncall.stderr index fa2deafb673..2a736491594 100644 --- a/src/test/ui/parser/issue-14303-fncall.stderr +++ b/src/test/ui/parser/issue-14303-fncall.stderr @@ -1,21 +1,12 @@ error: lifetime parameters must be declared prior to type parameters - --> $DIR/issue-14303-fncall.rs:4:31 + --> $DIR/issue-14303-fncall.rs:13:29 | -LL | .collect::<Vec<'a, usize, 'b>>() - | ^^ must be declared prior to type parameters - -error[E0261]: use of undeclared lifetime name `'a` - --> $DIR/issue-14303-fncall.rs:4:20 - | -LL | .collect::<Vec<'a, usize, 'b>>() - | ^^ undeclared lifetime - -error[E0261]: use of undeclared lifetime name `'b` - --> $DIR/issue-14303-fncall.rs:4:31 +LL | .collect::<Vec<S<_, 'a>>>(); + | ^^ must be declared prior to type parameters +help: move the lifetime parameter prior to the first type parameter | -LL | .collect::<Vec<'a, usize, 'b>>() - | ^^ undeclared lifetime +LL | .collect::<Vec<S<'a, _>>>(); + | ^^^ -- -error: aborting due to 3 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0261`. diff --git a/src/test/ui/parser/issue-14303-path.rs b/src/test/ui/parser/issue-14303-path.rs index 8749d46818f..a08c89f3437 100644 --- a/src/test/ui/parser/issue-14303-path.rs +++ b/src/test/ui/parser/issue-14303-path.rs @@ -9,6 +9,5 @@ mod foo { fn bar<'a, 'b, 'c, T>(x: foo::X<'a, T, 'b, 'c>) {} //~^ ERROR lifetime parameters must be declared prior to type parameters -//~| ERROR lifetime parameters must be declared prior to type parameters fn main() {} diff --git a/src/test/ui/parser/issue-14303-path.stderr b/src/test/ui/parser/issue-14303-path.stderr index 07e4441b0de..fb4fb32e11e 100644 --- a/src/test/ui/parser/issue-14303-path.stderr +++ b/src/test/ui/parser/issue-14303-path.stderr @@ -2,13 +2,13 @@ error: lifetime parameters must be declared prior to type parameters --> $DIR/issue-14303-path.rs:10:40 | LL | fn bar<'a, 'b, 'c, T>(x: foo::X<'a, T, 'b, 'c>) {} - | ^^ must be declared prior to type parameters - -error: lifetime parameters must be declared prior to type parameters - --> $DIR/issue-14303-path.rs:10:44 + | ^^ ^^ must be declared prior to type parameters + | | + | must be declared prior to type parameters +help: move the lifetime parameters prior to the first type parameter | -LL | fn bar<'a, 'b, 'c, T>(x: foo::X<'a, T, 'b, 'c>) {} - | ^^ must be declared prior to type parameters +LL | fn bar<'a, 'b, 'c, T>(x: foo::X<'a, 'b, 'c, T>) {} + | ^^^ ^^^ -- -error: aborting due to 2 previous errors +error: aborting due to previous error |
