diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-07-12 10:45:37 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-07-12 10:45:37 +0100 |
commit | 28f0171dbdf51ab02bf3e8090d80dcdf0b733662 (patch) | |
tree | 72dd0e6a6d4cb466c654986a903b974392d3375c /crates/ra_hir_ty/src/infer | |
parent | 1a9d7724dac54510c7b702d11a126364604af61c (diff) | |
parent | 9d114b9707fd3d6aaa3224cd1794e8e49e433f36 (diff) |
Merge #5326
5326: infer: Add type inference support for Union types r=flodiebold a=otavio
This adds the type inference to Union types and add a small test case
for it, ensuring it keeps working in future.
Fixes: #5277
Signed-off-by: Otavio Salvador <[email protected]>
----
#
Co-authored-by: Otavio Salvador <[email protected]>
Diffstat (limited to 'crates/ra_hir_ty/src/infer')
-rw-r--r-- | crates/ra_hir_ty/src/infer/expr.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/infer/expr.rs b/crates/ra_hir_ty/src/infer/expr.rs index 06baac2a9..bd9a387f5 100644 --- a/crates/ra_hir_ty/src/infer/expr.rs +++ b/crates/ra_hir_ty/src/infer/expr.rs | |||
@@ -405,8 +405,15 @@ impl<'a> InferenceContext<'a> { | |||
405 | .subst(&a_ty.parameters) | 405 | .subst(&a_ty.parameters) |
406 | }) | 406 | }) |
407 | } | 407 | } |
408 | // FIXME: | 408 | TypeCtor::Adt(AdtId::UnionId(u)) => { |
409 | TypeCtor::Adt(AdtId::UnionId(_)) => None, | 409 | self.db.union_data(u).variant_data.field(name).map(|local_id| { |
410 | let field = FieldId { parent: u.into(), local_id }; | ||
411 | self.write_field_resolution(tgt_expr, field); | ||
412 | self.db.field_types(u.into())[field.local_id] | ||
413 | .clone() | ||
414 | .subst(&a_ty.parameters) | ||
415 | }) | ||
416 | } | ||
410 | _ => None, | 417 | _ => None, |
411 | }, | 418 | }, |
412 | _ => None, | 419 | _ => None, |