Use first match branch in case of type mismatch, not last

The comment says this was intentional, but I do agree with #4304 that it makes
more sense the other way around (for if/else as well).

Fixes #4304.
This commit is contained in:
Florian Diebold 2020-05-29 16:03:06 +02:00
parent 190a0595a4
commit 7d0586cb15
2 changed files with 2 additions and 4 deletions

View File

@ -45,9 +45,7 @@ impl<'a> InferenceContext<'a> {
self.coerce_merge_branch(&ptr_ty1, &ptr_ty2)
} else {
mark::hit!(coerce_merge_fail_fallback);
// For incompatible types, we use the latter one as result
// to be better recovery for `if` without `else`.
ty2.clone()
ty1.clone()
}
}
}

View File

@ -937,7 +937,7 @@ fn main(foo: Foo) {
51..107 'if tru... }': ()
54..58 'true': bool
59..67 '{ }': ()
73..107 'if fal... }': ()
73..107 'if fal... }': i32
76..81 'false': bool
82..107 '{ ... }': i32
92..95 'foo': Foo