about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosh White <jwhite927@gmail.com>2020-02-07 12:44:31 -0500
committerJosh White <jwhite927@gmail.com>2020-02-07 12:44:31 -0500
commit8b77f8688e9436c6b35d5746e3bb79e20c67567d (patch)
treecda0107d99d2c7e590625fd381dc1f57845506d0
parent78df44655aa8547baa25ee9ca49699ad82c7f76d (diff)
downloadrust-8b77f8688e9436c6b35d5746e3bb79e20c67567d.tar.gz
rust-8b77f8688e9436c6b35d5746e3bb79e20c67567d.zip
performed --bless of 15 ui tests affected
-rw-r--r--src/librustc_error_codes/error_codes/E0637.md69
-rw-r--r--src/test/ui/const-generics/const-param-elided-lifetime.stderr1
-rw-r--r--src/test/ui/error-codes/E0637.stderr1
-rw-r--r--src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr3
-rw-r--r--src/test/ui/underscore-lifetime/in-binder.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr3
-rw-r--r--src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr1
-rw-r--r--src/test/ui/underscore-lifetime/where-clauses.stderr1
16 files changed, 67 insertions, 21 deletions
diff --git a/src/librustc_error_codes/error_codes/E0637.md b/src/librustc_error_codes/error_codes/E0637.md
index 978cf273c94..ba81e42ce08 100644
--- a/src/librustc_error_codes/error_codes/E0637.md
+++ b/src/librustc_error_codes/error_codes/E0637.md
@@ -1,31 +1,62 @@
-An underscore `_` character or a numeric literal `u8`, `i32`, `f64`, etc has
-been used as the identifier for a lifetime.
+An underscore `_` character has been used as the identifier for a lifetime,
+or a const generic has been borrowed without an explicit lifetime.
 
-Erroneous code example 1:
+Erroneous example with an underscore:
 ```
-fn some_function<'_>(str1: &'_ str, str2: &'_ str) -> &'_ str {
-    //Some code
-}
+fn foo<'_>(str1: &'_ str, str2: &'_ str) -> &'_ str {}
+    // ^^ `'_` is a reserved lifetime name
+```
+Lifetimes are named with `'ident`, where ident is the name of the lifetime or
+loop. The `_` character, which represents the ignore pattern, cannot be used
+as the identifier because it is a reserved lifetime name. To fix
+this, use a lowercase letter, or a series of lowercase letters as the lifetime
+identifier. Often a single lowercase letter, such as `'a`, is sufficient.  For
+more information, see
+[the book][bk-no].
+
+Corrected underscore example:
+```
+fn <'a>(str1: &'a str, str2: &'a str) -> &'a str {}
 ```
-or Erroneous code example 2:
+
+Erroneous example with const generic:
 ```
-fn some_function<'u8>(str1: &'u8 str, str2: &'u8 str) -> &'u8 str {
-    //Some code
+struct A<const N: &u8>;
+//~^ ERROR `&` without an explicit lifetime name cannot be used here
+trait B {}
+
+impl<const N: &u8> A<N> { 
+//~^ ERROR `&` without an explicit lifetime name cannot be used here
+    fn foo<const M: &u8>(&self) {}
+    //~^ ERROR `&` without an explicit lifetime name cannot be used here
+}
+
+impl<const N: &u8> B for A<N> {}
+//~^ ERROR `&` without an explicit lifetime name cannot be used here
+
+fn bar<const N: &u8>() {}
+//~^ ERROR `&` without an explicit lifetime name cannot be used here
 }
 ```
 
-Lifetimes are named with `'ident`, where ident is the name of the lifetime or
-loop. The `_` character, which represents the ignore pattern, cannot be used
-as the identifier because it is a reserved lifetime name. Numeric literals are
-also invalid lifetime identifiers and will cause this error to be thrown. To fix
-this, use a series of lowercase letters as the lifetime identifier. Often a
-single lowercase letter, such as `'a`, is sufficient.  For more information, see
-[the book][bk-no].
+Const generics cannot be borrowed without specifying a lifetime.The 
+compiler handles memory allocation of constants differently than that of
+variables and it cannot infer the lifetime of the borrowed constant.
+To fix this, explicitly specify a lifetime for the const generic.
 
-Corrected code example:
+Corrected const generic example:
 ```
-fn some_function<'a>(str1: &'a str, str2: &'a str) -> &'a str {
-    //Some code
+struct A<const N: &'a u8>;
+
+trait B {}
+
+impl<const N: &'a u8> A<N> {
+    fn foo<const M: &'a u8>(&self) {}
+}
+
+impl<const N: &'a u8> B for A<N> {}
+
+fn bar<const N: &'a u8>() {}
 }
 ```
 [bk-no]: https://doc.rust-lang.org/book/appendix-02-operators.html#non-operator-symbols
diff --git a/src/test/ui/const-generics/const-param-elided-lifetime.stderr b/src/test/ui/const-generics/const-param-elided-lifetime.stderr
index 93133c507fe..6841d1fdf36 100644
--- a/src/test/ui/const-generics/const-param-elided-lifetime.stderr
+++ b/src/test/ui/const-generics/const-param-elided-lifetime.stderr
@@ -38,3 +38,4 @@ LL | #![feature(const_generics)]
 
 error: aborting due to 5 previous errors
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/error-codes/E0637.stderr b/src/test/ui/error-codes/E0637.stderr
index 9c3ca87ed7e..d19ebfd15a5 100644
--- a/src/test/ui/error-codes/E0637.stderr
+++ b/src/test/ui/error-codes/E0637.stderr
@@ -18,3 +18,4 @@ LL | impl<'a: '_> Bar<'a> {
 
 error: aborting due to 3 previous errors
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr b/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr
index 8720288b53e..9f410c0dbbb 100644
--- a/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr
+++ b/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr
@@ -18,4 +18,5 @@ LL | fn bar<'b, L: X<&'b Nested<i32>>>(){}
 
 error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0106`.
+Some errors have detailed explanations: E0106, E0637.
+For more information about an error, try `rustc --explain E0106`.
diff --git a/src/test/ui/underscore-lifetime/in-binder.stderr b/src/test/ui/underscore-lifetime/in-binder.stderr
index 1b936dd9aec..fcd7eddb576 100644
--- a/src/test/ui/underscore-lifetime/in-binder.stderr
+++ b/src/test/ui/underscore-lifetime/in-binder.stderr
@@ -36,3 +36,4 @@ LL | fn foo<'_>() {
 
 error: aborting due to 6 previous errors
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr b/src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr
index c7cda38e476..ada4551baef 100644
--- a/src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr
+++ b/src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr
@@ -38,4 +38,5 @@ LL | fn foo2<'a>(_: &'a u8, y: &'a u8) -> &'a u8 { y }
 
 error: aborting due to 5 previous errors
 
-For more information about this error, try `rustc --explain E0106`.
+Some errors have detailed explanations: E0106, E0637.
+For more information about an error, try `rustc --explain E0106`.
diff --git a/src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr b/src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr
index 6fa74d4e310..4b38a26f957 100644
--- a/src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr
+++ b/src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr
@@ -6,3 +6,4 @@ LL | impl<'b: '_> Foo<'b> for i32 {}
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr
index eec8e4b8468..fe726cb49c7 100644
--- a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr
@@ -6,3 +6,4 @@ LL |     T: WithType<&u32>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr
index eec8e4b8468..fe726cb49c7 100644
--- a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr
@@ -6,3 +6,4 @@ LL |     T: WithType<&u32>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr
index d2c3e352045..95939fd6b7e 100644
--- a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr
@@ -6,3 +6,4 @@ LL |     T: WithRegion<'_>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr
index d2c3e352045..95939fd6b7e 100644
--- a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr
@@ -6,3 +6,4 @@ LL |     T: WithRegion<'_>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr b/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr
index 586b2b6aeaf..fbd14de2107 100644
--- a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr
@@ -6,3 +6,4 @@ LL |     T: WithType<&u32>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr b/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr
index 586b2b6aeaf..fbd14de2107 100644
--- a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr
@@ -6,3 +6,4 @@ LL |     T: WithType<&u32>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr b/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr
index faabf57a7df..92caff0dcde 100644
--- a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr
@@ -6,3 +6,4 @@ LL |     T: WithRegion<'_>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr b/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr
index faabf57a7df..92caff0dcde 100644
--- a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr
+++ b/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr
@@ -6,3 +6,4 @@ LL |     T: WithRegion<'_>
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0637`.
diff --git a/src/test/ui/underscore-lifetime/where-clauses.stderr b/src/test/ui/underscore-lifetime/where-clauses.stderr
index 8674a925c11..1a3ea4af7e1 100644
--- a/src/test/ui/underscore-lifetime/where-clauses.stderr
+++ b/src/test/ui/underscore-lifetime/where-clauses.stderr
@@ -12,3 +12,4 @@ LL | impl<T: '_> Foo<'static> for Vec<T> {}
 
 error: aborting due to 2 previous errors
 
+For more information about this error, try `rustc --explain E0637`.