aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/infer.rs
diff options
context:
space:
mode:
authoruHOOCCOOHu <[email protected]>2019-09-26 19:04:47 +0100
committeruHOOCCOOHu <[email protected]>2019-09-26 19:04:47 +0100
commit128dc5355b81b0217fede903ae79f75ba0124716 (patch)
tree7ded1337bc7a77c66098d4307a2d381cb9a1f3b2 /crates/ra_hir/src/ty/infer.rs
parent53a30d9e69ee5149e4fdb1c6fe4081281e879d0e (diff)
Refactor `Name` ready for hygienic macro
Diffstat (limited to 'crates/ra_hir/src/ty/infer.rs')
-rw-r--r--crates/ra_hir/src/ty/infer.rs9
1 files changed, 4 insertions, 5 deletions
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs
index db3377357..8f92468e6 100644
--- a/crates/ra_hir/src/ty/infer.rs
+++ b/crates/ra_hir/src/ty/infer.rs
@@ -609,7 +609,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
609 609
610 for (i, &subpat) in subpats.iter().enumerate() { 610 for (i, &subpat) in subpats.iter().enumerate() {
611 let expected_ty = def 611 let expected_ty = def
612 .and_then(|d| d.field(self.db, &Name::tuple_field_name(i))) 612 .and_then(|d| d.field(self.db, &Name::new_tuple_field(i)))
613 .map_or(Ty::Unknown, |field| field.ty(self.db)) 613 .map_or(Ty::Unknown, |field| field.ty(self.db))
614 .subst(&substs); 614 .subst(&substs);
615 let expected_ty = self.normalize_associated_types_in(expected_ty); 615 let expected_ty = self.normalize_associated_types_in(expected_ty);
@@ -1375,10 +1375,9 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
1375 ) 1375 )
1376 .find_map(|derefed_ty| match canonicalized.decanonicalize_ty(derefed_ty.value) { 1376 .find_map(|derefed_ty| match canonicalized.decanonicalize_ty(derefed_ty.value) {
1377 Ty::Apply(a_ty) => match a_ty.ctor { 1377 Ty::Apply(a_ty) => match a_ty.ctor {
1378 TypeCtor::Tuple { .. } => { 1378 TypeCtor::Tuple { .. } => name
1379 let i = name.to_string().parse::<usize>().ok(); 1379 .as_tuple_index()
1380 i.and_then(|i| a_ty.parameters.0.get(i).cloned()) 1380 .and_then(|idx| a_ty.parameters.0.get(idx).cloned()),
1381 }
1382 TypeCtor::Adt(Adt::Struct(s)) => s.field(self.db, name).map(|field| { 1381 TypeCtor::Adt(Adt::Struct(s)) => s.field(self.db, name).map(|field| {
1383 self.write_field_resolution(tgt_expr, field); 1382 self.write_field_resolution(tgt_expr, field);
1384 field.ty(self.db).subst(&a_ty.parameters) 1383 field.ty(self.db).subst(&a_ty.parameters)