Note closure captures when reporting deferred cast to fn ptr failed

This commit is contained in:
Michael Goulet 2024-07-22 21:51:39 -04:00
parent 20f23abbec
commit b7495b401c
2 changed files with 7 additions and 0 deletions

View File

@ -495,6 +495,7 @@ fn report_cast_error(&self, fcx: &FnCtxt<'a, 'tcx>, e: CastError) {
err.span_label(self.span, "invalid cast");
}
fcx.suggest_no_capture_closure(&mut err, self.cast_ty, self.expr_ty);
self.try_suggest_collection_to_bool(fcx, &mut err);
err.emit();

View File

@ -3,6 +3,12 @@ error[E0605]: non-primitive cast: `{closure@$DIR/closure-no-fn-3.rs:6:28: 6:30}`
|
LL | let baz: fn() -> u8 = (|| { b }) as fn() -> u8;
| ^^^^^^^^^^^^^^^^^^^^^^^^ invalid cast
|
note: closures can only be coerced to `fn` types if they do not capture any variables
--> $DIR/closure-no-fn-3.rs:6:33
|
LL | let baz: fn() -> u8 = (|| { b }) as fn() -> u8;
| ^ `b` captured here
error: aborting due to 1 previous error