Skip to content

Commit 522ae84

Browse files
Suggest type mismatches even when using ref syntax on binding
1 parent e740925 commit 522ae84

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1404,7 +1404,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14041404
// type of the place it is referencing, and not some
14051405
// supertype thereof.
14061406
let init_ty = self.check_expr_with_needs(init, Needs::maybe_mut_place(m));
1407-
self.demand_eqtype(init.span, local_ty, init_ty);
1407+
if let Some(mut diag) = self.demand_eqtype_diag(init.span, local_ty, init_ty) {
1408+
self.emit_type_mismatch_suggestions(
1409+
&mut diag,
1410+
init.peel_drop_temps(),
1411+
init_ty,
1412+
local_ty,
1413+
None,
1414+
None,
1415+
);
1416+
diag.emit();
1417+
}
14081418
init_ty
14091419
} else {
14101420
self.check_expr_coercible_to_type(init, local_ty, None)

tests/ui/switched-expectations.stderr

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ error[E0308]: mismatched types
22
--> $DIR/switched-expectations.rs:3:30
33
|
44
LL | let ref string: String = var;
5-
| ^^^ expected `String`, found `i32`
5+
| ^^^- help: try using a conversion method: `.to_string()`
6+
| |
7+
| expected `String`, found `i32`
68

79
error: aborting due to previous error
810

0 commit comments

Comments
 (0)