summaryrefslogtreecommitdiffstats
path: root/src/test/ui/rfcs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/test/ui/rfcs/rfc1623-2.rs (renamed from src/test/ui/rfc1623.rs)0
-rw-r--r--src/test/ui/rfcs/rfc1623-2.stderr39
-rw-r--r--src/test/ui/rfcs/rfc1623-3.rs (renamed from src/test/ui/rfc1623-2.rs)0
-rw-r--r--src/test/ui/rfcs/rfc1623-3.stderr35
4 files changed, 74 insertions, 0 deletions
diff --git a/src/test/ui/rfc1623.rs b/src/test/ui/rfcs/rfc1623-2.rs
index c0e13a5f5..c0e13a5f5 100644
--- a/src/test/ui/rfc1623.rs
+++ b/src/test/ui/rfcs/rfc1623-2.rs
diff --git a/src/test/ui/rfcs/rfc1623-2.stderr b/src/test/ui/rfcs/rfc1623-2.stderr
new file mode 100644
index 000000000..d183eaaa6
--- /dev/null
+++ b/src/test/ui/rfcs/rfc1623-2.stderr
@@ -0,0 +1,39 @@
+error[E0308]: mismatched types
+ --> $DIR/rfc1623-2.rs:28:8
+ |
+LL | f: &id,
+ | ^^^ one type is more general than the other
+ |
+ = note: expected trait `for<'a, 'b> Fn<(&'a Foo<'b>,)>`
+ found trait `Fn<(&Foo<'_>,)>`
+
+error[E0308]: mismatched types
+ --> $DIR/rfc1623-2.rs:28:8
+ |
+LL | f: &id,
+ | ^^^ one type is more general than the other
+ |
+ = note: expected trait `for<'a, 'b> Fn<(&'a Foo<'b>,)>`
+ found trait `Fn<(&Foo<'_>,)>`
+
+error: implementation of `FnOnce` is not general enough
+ --> $DIR/rfc1623-2.rs:28:8
+ |
+LL | f: &id,
+ | ^^^ implementation of `FnOnce` is not general enough
+ |
+ = note: `fn(&'2 Foo<'_>) -> &'2 Foo<'_> {id::<&'2 Foo<'_>>}` must implement `FnOnce<(&'1 Foo<'b>,)>`, for any lifetime `'1`...
+ = note: ...but it actually implements `FnOnce<(&'2 Foo<'_>,)>`, for some specific lifetime `'2`
+
+error: implementation of `FnOnce` is not general enough
+ --> $DIR/rfc1623-2.rs:28:8
+ |
+LL | f: &id,
+ | ^^^ implementation of `FnOnce` is not general enough
+ |
+ = note: `fn(&Foo<'2>) -> &Foo<'2> {id::<&Foo<'2>>}` must implement `FnOnce<(&'a Foo<'1>,)>`, for any lifetime `'1`...
+ = note: ...but it actually implements `FnOnce<(&Foo<'2>,)>`, for some specific lifetime `'2`
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/rfc1623-2.rs b/src/test/ui/rfcs/rfc1623-3.rs
index 26fa6fdb5..26fa6fdb5 100644
--- a/src/test/ui/rfc1623-2.rs
+++ b/src/test/ui/rfcs/rfc1623-3.rs
diff --git a/src/test/ui/rfcs/rfc1623-3.stderr b/src/test/ui/rfcs/rfc1623-3.stderr
new file mode 100644
index 000000000..77fc3f041
--- /dev/null
+++ b/src/test/ui/rfcs/rfc1623-3.stderr
@@ -0,0 +1,35 @@
+error[E0106]: missing lifetime specifier
+ --> $DIR/rfc1623-3.rs:8:42
+ |
+LL | static NON_ELIDABLE_FN: &fn(&u8, &u8) -> &u8 =
+ | --- --- ^ expected named lifetime parameter
+ |
+ = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from argument 1 or argument 2
+ = note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
+help: consider making the type lifetime-generic with a new `'a` lifetime
+ |
+LL | static NON_ELIDABLE_FN: &for<'a> fn(&'a u8, &'a u8) -> &'a u8 =
+ | +++++++ ++ ++ ++
+
+error[E0106]: missing lifetime specifier
+ --> $DIR/rfc1623-3.rs:10:39
+ |
+LL | &(non_elidable as fn(&u8, &u8) -> &u8);
+ | --- --- ^ expected named lifetime parameter
+ |
+ = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from argument 1 or argument 2
+help: consider making the type lifetime-generic with a new `'a` lifetime
+ |
+LL | &(non_elidable as for<'a> fn(&'a u8, &'a u8) -> &'a u8);
+ | +++++++ ++ ++ ++
+
+error[E0605]: non-primitive cast: `for<'a, 'b> fn(&'a u8, &'b u8) -> &'a u8 {non_elidable}` as `for<'a, 'b> fn(&'a u8, &'b u8) -> &u8`
+ --> $DIR/rfc1623-3.rs:10:6
+ |
+LL | &(non_elidable as fn(&u8, &u8) -> &u8);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cast
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0106, E0605.
+For more information about an error, try `rustc --explain E0106`.