about summary refs log tree commit diff
path: root/src/test/ui/parser
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-01-12 19:25:03 -0800
committerEsteban Küber <esteban@kuber.com.ar>2019-01-12 19:25:03 -0800
commit28ea03e11477032a29b30284487d6d73e181ecaf (patch)
tree8c5ae05fac65d0d2ebea41edd1c79cf28eb0a29a /src/test/ui/parser
parentdb740313e023c76a2b354981e352ebcf6d7d57e2 (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.rs23
-rw-r--r--src/test/ui/parser/issue-14303-fncall.stderr23
-rw-r--r--src/test/ui/parser/issue-14303-path.rs1
-rw-r--r--src/test/ui/parser/issue-14303-path.stderr14
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