Skip to content

Commit 23d7dbf

Browse files
bors[bot]Veykril
andauthored
Merge #7814
7814: Turn Ty::Tuple variant into a tuple-variant r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
2 parents 2fc137b + a3fd2fa commit 23d7dbf

File tree

8 files changed

+29
-40
lines changed

8 files changed

+29
-40
lines changed

crates/hir/src/code_model.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1547,7 +1547,7 @@ impl Type {
15471547
}
15481548

15491549
pub fn is_unit(&self) -> bool {
1550-
matches!(self.ty.value, Ty::Tuple { cardinality: 0, .. })
1550+
matches!(self.ty.value, Ty::Tuple(0, ..))
15511551
}
15521552
pub fn is_bool(&self) -> bool {
15531553
matches!(self.ty.value, Ty::Scalar(Scalar::Bool))
@@ -1741,7 +1741,7 @@ impl Type {
17411741
}
17421742

17431743
pub fn tuple_fields(&self, _db: &dyn HirDatabase) -> Vec<Type> {
1744-
if let Ty::Tuple { substs, .. } = &self.ty.value {
1744+
if let Ty::Tuple(_, substs) = &self.ty.value {
17451745
substs.iter().map(|ty| self.derived(ty.clone())).collect()
17461746
} else {
17471747
Vec::new()

crates/hir_ty/src/display.rs

+2-7
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ impl HirDisplay for Ty {
330330
write!(f, "{}", ty_display)?;
331331
}
332332
}
333-
Ty::Tuple { substs, .. } => {
333+
Ty::Tuple(_, substs) => {
334334
if substs.len() == 1 {
335335
write!(f, "(")?;
336336
substs[0].hir_fmt(f)?;
@@ -471,14 +471,9 @@ impl HirDisplay for Ty {
471471
projection_ty.hir_fmt(f)?;
472472
}
473473
}
474-
Ty::ForeignType(type_alias, parameters) => {
474+
Ty::ForeignType(type_alias) => {
475475
let type_alias = f.db.type_alias_data(*type_alias);
476476
write!(f, "{}", type_alias.name)?;
477-
if parameters.len() > 0 {
478-
write!(f, "<")?;
479-
f.write_joined(&*parameters.0, ", ")?;
480-
write!(f, ">")?;
481-
}
482477
}
483478
Ty::OpaqueType(opaque_ty_id, parameters) => {
484479
match opaque_ty_id {

crates/hir_ty/src/infer/expr.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ impl<'a> InferenceContext<'a> {
8282
arg_tys.push(arg);
8383
}
8484
let parameters = param_builder.build();
85-
let arg_ty = Ty::Tuple { cardinality: num_args as u16, substs: parameters };
85+
let arg_ty = Ty::Tuple(num_args, parameters);
8686
let substs =
8787
Substs::build_for_generics(&generic_params).push(ty.clone()).push(arg_ty).build();
8888

@@ -424,7 +424,7 @@ impl<'a> InferenceContext<'a> {
424424
},
425425
)
426426
.find_map(|derefed_ty| match canonicalized.decanonicalize_ty(derefed_ty.value) {
427-
Ty::Tuple { substs, .. } => {
427+
Ty::Tuple(_, substs) => {
428428
name.as_tuple_index().and_then(|idx| substs.0.get(idx).cloned())
429429
}
430430
Ty::Adt(AdtId::StructId(s), parameters) => {
@@ -635,7 +635,7 @@ impl<'a> InferenceContext<'a> {
635635
}
636636
Expr::Tuple { exprs } => {
637637
let mut tys = match &expected.ty {
638-
Ty::Tuple { substs, .. } => substs
638+
Ty::Tuple(_, substs) => substs
639639
.iter()
640640
.cloned()
641641
.chain(repeat_with(|| self.table.new_type_var()))
@@ -648,7 +648,7 @@ impl<'a> InferenceContext<'a> {
648648
self.infer_expr_coerce(*expr, &Expectation::has_type(ty.clone()));
649649
}
650650

651-
Ty::Tuple { cardinality: tys.len() as u16, substs: Substs(tys.into()) }
651+
Ty::Tuple(tys.len(), Substs(tys.into()))
652652
}
653653
Expr::Array(array) => {
654654
let elem_ty = match &expected.ty {

crates/hir_ty/src/infer/pat.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ impl<'a> InferenceContext<'a> {
138138
inner_tys.extend(expectations_iter.by_ref().take(n_uncovered_patterns).cloned());
139139
inner_tys.extend(post.iter().zip(expectations_iter).map(infer_pat));
140140

141-
Ty::Tuple { cardinality: inner_tys.len() as u16, substs: Substs(inner_tys.into()) }
141+
Ty::Tuple(inner_tys.len(), Substs(inner_tys.into()))
142142
}
143143
Pat::Or(ref pats) => {
144144
if let Some((first_pat, rest)) = pats.split_first() {

crates/hir_ty/src/lib.rs

+8-13
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ pub enum Ty {
120120
Scalar(Scalar),
121121

122122
/// A tuple type. For example, `(i32, bool)`.
123-
Tuple { cardinality: u16, substs: Substs },
123+
Tuple(usize, Substs),
124124

125125
/// An array with the given length. Written as `[T; n]`.
126126
Array(Substs),
@@ -169,7 +169,7 @@ pub enum Ty {
169169
Closure { def: DefWithBodyId, expr: ExprId, substs: Substs },
170170

171171
/// Represents a foreign type declared in external blocks.
172-
ForeignType(TypeAliasId, Substs),
172+
ForeignType(TypeAliasId),
173173

174174
/// A pointer to a function. Written as `fn() -> i32`.
175175
///
@@ -582,7 +582,7 @@ impl TypeWalk for FnSig {
582582

583583
impl Ty {
584584
pub fn unit() -> Self {
585-
Ty::Tuple { cardinality: 0, substs: Substs::empty() }
585+
Ty::Tuple(0, Substs::empty())
586586
}
587587

588588
pub fn fn_ptr(sig: FnSig) -> Self {
@@ -642,7 +642,7 @@ impl Ty {
642642

643643
pub fn as_tuple(&self) -> Option<&Substs> {
644644
match self {
645-
Ty::Tuple { substs: parameters, .. } => Some(parameters),
645+
Ty::Tuple(_, substs) => Some(substs),
646646
_ => None,
647647
}
648648
}
@@ -684,9 +684,7 @@ impl Ty {
684684
Ty::FnPtr { num_args, is_varargs, .. },
685685
Ty::FnPtr { num_args: num_args2, is_varargs: is_varargs2, .. },
686686
) => num_args == num_args2 && is_varargs == is_varargs2,
687-
(Ty::Tuple { cardinality, .. }, Ty::Tuple { cardinality: cardinality2, .. }) => {
688-
cardinality == cardinality2
689-
}
687+
(Ty::Tuple(cardinality, _), Ty::Tuple(cardinality2, _)) => cardinality == cardinality2,
690688
(Ty::Str, Ty::Str) | (Ty::Never, Ty::Never) => true,
691689
(Ty::Scalar(scalar), Ty::Scalar(scalar2)) => scalar == scalar2,
692690
_ => false,
@@ -754,10 +752,9 @@ impl Ty {
754752
| Ty::Ref(_, substs)
755753
| Ty::FnDef(_, substs)
756754
| Ty::FnPtr { substs, .. }
757-
| Ty::Tuple { substs, .. }
755+
| Ty::Tuple(_, substs)
758756
| Ty::OpaqueType(_, substs)
759757
| Ty::AssociatedType(_, substs)
760-
| Ty::ForeignType(_, substs)
761758
| Ty::Closure { substs, .. } => {
762759
assert_eq!(substs.len(), new_substs.len());
763760
*substs = new_substs;
@@ -778,10 +775,9 @@ impl Ty {
778775
| Ty::Ref(_, substs)
779776
| Ty::FnDef(_, substs)
780777
| Ty::FnPtr { substs, .. }
781-
| Ty::Tuple { substs, .. }
778+
| Ty::Tuple(_, substs)
782779
| Ty::OpaqueType(_, substs)
783780
| Ty::AssociatedType(_, substs)
784-
| Ty::ForeignType(_, substs)
785781
| Ty::Closure { substs, .. } => Some(substs),
786782
_ => None,
787783
}
@@ -796,10 +792,9 @@ impl Ty {
796792
| Ty::Ref(_, substs)
797793
| Ty::FnDef(_, substs)
798794
| Ty::FnPtr { substs, .. }
799-
| Ty::Tuple { substs, .. }
795+
| Ty::Tuple(_, substs)
800796
| Ty::OpaqueType(_, substs)
801797
| Ty::AssociatedType(_, substs)
802-
| Ty::ForeignType(_, substs)
803798
| Ty::Closure { substs, .. } => Some(substs),
804799
_ => None,
805800
}

crates/hir_ty/src/lower.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ impl Ty {
148148
TypeRef::Never => Ty::Never,
149149
TypeRef::Tuple(inner) => {
150150
let inner_tys: Arc<[Ty]> = inner.iter().map(|tr| Ty::from_hir(ctx, tr)).collect();
151-
Ty::Tuple { cardinality: inner_tys.len() as u16, substs: Substs(inner_tys) }
151+
Ty::Tuple(inner_tys.len(), Substs(inner_tys))
152152
}
153153
TypeRef::Path(path) => {
154154
let (ty, res_) = Ty::from_hir_path(ctx, path);
@@ -1100,10 +1100,10 @@ fn type_for_type_alias(db: &dyn HirDatabase, t: TypeAliasId) -> Binders<Ty> {
11001100
let resolver = t.resolver(db.upcast());
11011101
let ctx =
11021102
TyLoweringContext::new(db, &resolver).with_type_param_mode(TypeParamLoweringMode::Variable);
1103-
let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST);
11041103
if db.type_alias_data(t).is_extern {
1105-
Binders::new(substs.len(), Ty::ForeignType(t, substs))
1104+
Binders::new(0, Ty::ForeignType(t))
11061105
} else {
1106+
let substs = Substs::bound_vars(&generics, DebruijnIndex::INNERMOST);
11071107
let type_ref = &db.type_alias_data(t).type_ref;
11081108
let inner = Ty::from_hir(&ctx, type_ref.as_ref().unwrap_or(&TypeRef::Error));
11091109
Binders::new(substs.len(), inner)

crates/hir_ty/src/method_resolution.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub enum TyFingerprint {
3333
Scalar(Scalar),
3434
Adt(AdtId),
3535
Dyn(TraitId),
36-
Tuple { cardinality: u16 },
36+
Tuple(usize),
3737
ForeignType(TypeAliasId),
3838
FnPtr { num_args: u16, is_varargs: bool },
3939
}
@@ -50,7 +50,7 @@ impl TyFingerprint {
5050
&Ty::Array(..) => TyFingerprint::Array,
5151
&Ty::Scalar(scalar) => TyFingerprint::Scalar(scalar),
5252
&Ty::Adt(adt, _) => TyFingerprint::Adt(adt),
53-
&Ty::Tuple { cardinality: u16, .. } => TyFingerprint::Tuple { cardinality: u16 },
53+
&Ty::Tuple(cardinality, _) => TyFingerprint::Tuple(cardinality),
5454
&Ty::RawPtr(mutability, ..) => TyFingerprint::RawPtr(mutability),
5555
&Ty::ForeignType(alias_id, ..) => TyFingerprint::ForeignType(alias_id),
5656
&Ty::FnPtr { num_args, is_varargs, .. } => {
@@ -235,7 +235,7 @@ impl Ty {
235235
Ty::Adt(def_id, _) => {
236236
return mod_to_crate_ids(def_id.module(db.upcast()));
237237
}
238-
Ty::ForeignType(type_alias_id, _) => {
238+
Ty::ForeignType(type_alias_id) => {
239239
return mod_to_crate_ids(type_alias_id.lookup(db.upcast()).module(db.upcast()));
240240
}
241241
Ty::Scalar(Scalar::Bool) => lang_item_crate!("bool"),

crates/hir_ty/src/traits/chalk/mapping.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ impl ToChalk for Ty {
5555
chalk_ir::TyKind::OpaqueType(id, substitution).intern(&Interner)
5656
}
5757

58-
Ty::ForeignType(type_alias, _) => {
58+
Ty::ForeignType(type_alias) => {
5959
let foreign_type = TypeAliasAsForeignType(type_alias);
6060
let foreign_type_id = foreign_type.to_chalk(db);
6161
chalk_ir::TyKind::Foreign(foreign_type_id).intern(&Interner)
6262
}
6363

6464
Ty::Scalar(scalar) => chalk_ir::TyKind::Scalar(scalar).intern(&Interner),
6565

66-
Ty::Tuple { cardinality, substs } => {
66+
Ty::Tuple(cardinality, substs) => {
6767
let substitution = substs.to_chalk(db);
6868
chalk_ir::TyKind::Tuple(cardinality.into(), substitution).intern(&Interner)
6969
}
@@ -199,7 +199,7 @@ impl ToChalk for Ty {
199199

200200
chalk_ir::TyKind::Scalar(scalar) => Ty::Scalar(scalar),
201201
chalk_ir::TyKind::Tuple(cardinality, subst) => {
202-
Ty::Tuple { cardinality: cardinality as u16, substs: from_chalk(db, subst) }
202+
Ty::Tuple(cardinality, from_chalk(db, subst))
203203
}
204204
chalk_ir::TyKind::Raw(mutability, ty) => {
205205
Ty::RawPtr(from_chalk(db, mutability), Substs::single(from_chalk(db, ty)))
@@ -221,10 +221,9 @@ impl ToChalk for Ty {
221221
Ty::Closure { def, expr, substs: from_chalk(db, subst) }
222222
}
223223

224-
chalk_ir::TyKind::Foreign(foreign_def_id) => Ty::ForeignType(
225-
from_chalk::<TypeAliasAsForeignType, _>(db, foreign_def_id).0,
226-
Substs::empty(),
227-
),
224+
chalk_ir::TyKind::Foreign(foreign_def_id) => {
225+
Ty::ForeignType(from_chalk::<TypeAliasAsForeignType, _>(db, foreign_def_id).0)
226+
}
228227
chalk_ir::TyKind::Generator(_, _) => unimplemented!(), // FIXME
229228
chalk_ir::TyKind::GeneratorWitness(_, _) => unimplemented!(), // FIXME
230229
}

0 commit comments

Comments
 (0)