error[E0106]: missing lifetime specifier
  --> $DIR/issue-86667.rs:6:35
   |
LL | async fn a(s1: &str, s2: &str) -> &str {
   |                ----      ----     ^ 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 `s1` or `s2`
help: consider introducing a named lifetime parameter
   |
LL | async fn a<'a>(s1: &'a str, s2: &'a str) -> &'a str {
   |           ++++      ++           ++          ++

error[E0106]: missing lifetime specifier
  --> $DIR/issue-86667.rs:12:29
   |
LL | fn b(s1: &str, s2: &str) -> &str {
   |          ----      ----     ^ 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 `s1` or `s2`
help: consider introducing a named lifetime parameter
   |
LL | fn b<'a>(s1: &'a str, s2: &'a str) -> &'a str {
   |     ++++      ++           ++          ++

error: lifetime may not live long enough
  --> $DIR/issue-86667.rs:8:5
   |
LL | async fn a(s1: &str, s2: &str) -> &str {
   |                - let's call the lifetime of this reference `'1`
LL |
LL |     s1
   |     ^^ returning this value requires that `'1` must outlive `'static`

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0106`.