mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
Merge #4651
4651: Use first match branch in case of type mismatch, not last r=kjeremy a=flodiebold 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. Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
This commit is contained in:
commit
f7f01dd5f0
2 changed files with 2 additions and 4 deletions
|
@ -45,9 +45,7 @@ impl<'a> InferenceContext<'a> {
|
||||||
self.coerce_merge_branch(&ptr_ty1, &ptr_ty2)
|
self.coerce_merge_branch(&ptr_ty1, &ptr_ty2)
|
||||||
} else {
|
} else {
|
||||||
mark::hit!(coerce_merge_fail_fallback);
|
mark::hit!(coerce_merge_fail_fallback);
|
||||||
// For incompatible types, we use the latter one as result
|
ty1.clone()
|
||||||
// to be better recovery for `if` without `else`.
|
|
||||||
ty2.clone()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -957,7 +957,7 @@ fn main(foo: Foo) {
|
||||||
51..107 'if tru... }': ()
|
51..107 'if tru... }': ()
|
||||||
54..58 'true': bool
|
54..58 'true': bool
|
||||||
59..67 '{ }': ()
|
59..67 '{ }': ()
|
||||||
73..107 'if fal... }': ()
|
73..107 'if fal... }': i32
|
||||||
76..81 'false': bool
|
76..81 'false': bool
|
||||||
82..107 '{ ... }': i32
|
82..107 '{ ... }': i32
|
||||||
92..95 'foo': Foo
|
92..95 'foo': Foo
|
||||||
|
|
Loading…
Reference in a new issue