diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-04-07 16:58:22 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-04-07 16:58:22 +0100 |
commit | eb248d85a0eb91bae7bafcd69ffe4dfed3e32fce (patch) | |
tree | ad4255c4ba560c9e2d4fd0f404e91cfd1e71234b /crates/hir_ty/src/infer | |
parent | 062c8eb7cacb38a550889201aaa8b633ede29bb2 (diff) | |
parent | 92dcc53f94455e8933d76a8ba20642ceb069362d (diff) |
Merge #8402
8402: Remove Ty::substs{_mut} r=flodiebold a=flodiebold
Almost all uses actually only care about ADT substs, so it's better to be explicit. The methods were a bad abstraction anyway since they already didn't include the inner types of e.g. `TyKind::Ref` anymore.
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/hir_ty/src/infer')
-rw-r--r-- | crates/hir_ty/src/infer/expr.rs | 5 | ||||
-rw-r--r-- | crates/hir_ty/src/infer/pat.rs | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 9ab0fa212..9841988c5 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -412,7 +412,10 @@ impl<'a> InferenceContext<'a> { | |||
412 | 412 | ||
413 | self.unify(&ty, &expected.ty); | 413 | self.unify(&ty, &expected.ty); |
414 | 414 | ||
415 | let substs = ty.substs().cloned().unwrap_or_else(|| Substitution::empty(&Interner)); | 415 | let substs = ty |
416 | .as_adt() | ||
417 | .map(|(_, s)| s.clone()) | ||
418 | .unwrap_or_else(|| Substitution::empty(&Interner)); | ||
416 | let field_types = def_id.map(|it| self.db.field_types(it)).unwrap_or_default(); | 419 | let field_types = def_id.map(|it| self.db.field_types(it)).unwrap_or_default(); |
417 | let variant_data = def_id.map(|it| it.variant_data(self.db.upcast())); | 420 | let variant_data = def_id.map(|it| it.variant_data(self.db.upcast())); |
418 | for field in fields.iter() { | 421 | for field in fields.iter() { |
diff --git a/crates/hir_ty/src/infer/pat.rs b/crates/hir_ty/src/infer/pat.rs index e4813c87c..f88d5c5d3 100644 --- a/crates/hir_ty/src/infer/pat.rs +++ b/crates/hir_ty/src/infer/pat.rs | |||
@@ -33,7 +33,8 @@ impl<'a> InferenceContext<'a> { | |||
33 | } | 33 | } |
34 | self.unify(&ty, expected); | 34 | self.unify(&ty, expected); |
35 | 35 | ||
36 | let substs = ty.substs().cloned().unwrap_or_else(|| Substitution::empty(&Interner)); | 36 | let substs = |
37 | ty.as_adt().map(|(_, s)| s.clone()).unwrap_or_else(|| Substitution::empty(&Interner)); | ||
37 | 38 | ||
38 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); | 39 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); |
39 | let (pre, post) = match ellipsis { | 40 | let (pre, post) = match ellipsis { |
@@ -74,7 +75,8 @@ impl<'a> InferenceContext<'a> { | |||
74 | 75 | ||
75 | self.unify(&ty, expected); | 76 | self.unify(&ty, expected); |
76 | 77 | ||
77 | let substs = ty.substs().cloned().unwrap_or_else(|| Substitution::empty(&Interner)); | 78 | let substs = |
79 | ty.as_adt().map(|(_, s)| s.clone()).unwrap_or_else(|| Substitution::empty(&Interner)); | ||
78 | 80 | ||
79 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); | 81 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); |
80 | for subpat in subpats { | 82 | for subpat in subpats { |