Don't ICE in closure arg borrow suggestion

This commit is contained in:
Michael Goulet 2022-12-18 21:41:08 +00:00
parent 65c53c3bb6
commit dd8897eb63
3 changed files with 35 additions and 5 deletions

View file

@ -0,0 +1,10 @@
pub enum Sexpr<'a> {
Ident(&'a str),
}
fn map<'a, F: Fn(String) -> Sexpr<'a>>(f: F) {}
fn main() {
map(Sexpr::Ident);
//~^ ERROR type mismatch in function arguments
}

View file

@ -0,0 +1,22 @@
error[E0631]: type mismatch in function arguments
--> $DIR/enum-variant-arg-mismatch.rs:8:9
|
LL | Ident(&'a str),
| ----- found signature defined here
...
LL | map(Sexpr::Ident);
| --- ^^^^^^^^^^^^ expected due to this
| |
| required by a bound introduced by this call
|
= note: expected function signature `fn(String) -> _`
found function signature `fn(&str) -> _`
note: required by a bound in `map`
--> $DIR/enum-variant-arg-mismatch.rs:5:15
|
LL | fn map<'a, F: Fn(String) -> Sexpr<'a>>(f: F) {}
| ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `map`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0631`.