Skip to content

Commit afba0fb

Browse files
committed
Assume TyKind::General in EnaVariable::to_ty
1 parent 96f2f7e commit afba0fb

File tree

6 files changed

+33
-28
lines changed

6 files changed

+33
-28
lines changed

chalk-solve/src/infer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ impl<I: Interner> ParameterEnaVariableExt<I> for ParameterEnaVariable<I> {
218218
// we are matching on kind, so skipping it is fine
219219
let ena_variable = self.skip_kind();
220220
match &self.kind {
221-
VariableKind::Ty(kind) => ena_variable.to_ty(interner, *kind).cast(interner),
221+
VariableKind::Ty(kind) => ena_variable.to_ty_with_kind(interner, *kind).cast(interner),
222222
VariableKind::Lifetime => ena_variable.to_lifetime(interner).cast(interner),
223223
VariableKind::Const(ty) => ena_variable.to_const(interner, ty.clone()).cast(interner),
224224
}

chalk-solve/src/infer/invert.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ where
150150
.inverted_ty
151151
.entry(universe)
152152
.or_insert_with(|| table.new_variable(universe.ui))
153-
.to_ty(self.interner(), TyKind::General)
153+
.to_ty(self.interner())
154154
.shifted_in(self.interner()))
155155
}
156156

chalk-solve/src/infer/test.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ fn infer() {
99
let interner = &ChalkIr;
1010
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
1111
let environment0 = Environment::new(interner);
12-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
13-
let b = table.new_variable(U0).to_ty(interner, TyKind::General);
12+
let a = table.new_variable(U0).to_ty(interner);
13+
let b = table.new_variable(U0).to_ty(interner);
1414
table
1515
.unify(interner, &environment0, &a, &ty!(apply (item 0) (expr b)))
1616
.unwrap();
@@ -33,7 +33,7 @@ fn universe_error() {
3333
let interner = &ChalkIr;
3434
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
3535
let environment0 = Environment::new(interner);
36-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
36+
let a = table.new_variable(U0).to_ty(interner);
3737
table
3838
.unify(interner, &environment0, &a, &ty!(placeholder 1))
3939
.unwrap_err();
@@ -45,7 +45,7 @@ fn cycle_error() {
4545
let interner = &ChalkIr;
4646
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
4747
let environment0 = Environment::new(interner);
48-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
48+
let a = table.new_variable(U0).to_ty(interner);
4949
table
5050
.unify(interner, &environment0, &a, &ty!(apply (item 0) (expr a)))
5151
.unwrap_err();
@@ -62,8 +62,8 @@ fn cycle_indirect() {
6262
let interner = &ChalkIr;
6363
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
6464
let environment0 = Environment::new(interner);
65-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
66-
let b = table.new_variable(U0).to_ty(interner, TyKind::General);
65+
let a = table.new_variable(U0).to_ty(interner);
66+
let b = table.new_variable(U0).to_ty(interner);
6767
table
6868
.unify(interner, &environment0, &a, &ty!(apply (item 0) (expr b)))
6969
.unwrap();
@@ -76,8 +76,8 @@ fn universe_error_indirect_1() {
7676
let interner = &ChalkIr;
7777
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
7878
let environment0 = Environment::new(interner);
79-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
80-
let b = table.new_variable(U1).to_ty(interner, TyKind::General);
79+
let a = table.new_variable(U0).to_ty(interner);
80+
let b = table.new_variable(U1).to_ty(interner);
8181
table
8282
.unify(interner, &environment0, &b, &ty!(placeholder 1))
8383
.unwrap();
@@ -90,8 +90,8 @@ fn universe_error_indirect_2() {
9090
let interner = &ChalkIr;
9191
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
9292
let environment0 = Environment::new(interner);
93-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
94-
let b = table.new_variable(U1).to_ty(interner, TyKind::General);
93+
let a = table.new_variable(U0).to_ty(interner);
94+
let b = table.new_variable(U1).to_ty(interner);
9595
table.unify(interner, &environment0, &a, &b).unwrap();
9696
table
9797
.unify(interner, &environment0, &b, &ty!(placeholder 1))
@@ -104,8 +104,8 @@ fn universe_promote() {
104104
let interner = &ChalkIr;
105105
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
106106
let environment0 = Environment::new(interner);
107-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
108-
let b = table.new_variable(U1).to_ty(interner, TyKind::General);
107+
let a = table.new_variable(U0).to_ty(interner);
108+
let b = table.new_variable(U1).to_ty(interner);
109109
table
110110
.unify(interner, &environment0, &a, &ty!(apply (item 0) (expr b)))
111111
.unwrap();
@@ -125,8 +125,8 @@ fn universe_promote_bad() {
125125
let interner = &ChalkIr;
126126
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
127127
let environment0 = Environment::new(interner);
128-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
129-
let b = table.new_variable(U1).to_ty(interner, TyKind::General);
128+
let a = table.new_variable(U0).to_ty(interner);
129+
let b = table.new_variable(U1).to_ty(interner);
130130
table
131131
.unify(interner, &environment0, &a, &ty!(apply (item 0) (expr b)))
132132
.unwrap();
@@ -143,7 +143,7 @@ fn projection_eq() {
143143
let interner = &ChalkIr;
144144
let mut table: InferenceTable<ChalkIr> = InferenceTable::new();
145145
let environment0 = Environment::new(interner);
146-
let a = table.new_variable(U0).to_ty(interner, TyKind::General);
146+
let a = table.new_variable(U0).to_ty(interner);
147147

148148
// expect an error ("cycle during unification")
149149
table
@@ -199,10 +199,10 @@ fn quantify_bound() {
199199
let mut table = make_table();
200200
let environment0 = Environment::new(interner);
201201

202-
let v0 = table.new_variable(U0).to_ty(interner, TyKind::General);
203-
let v1 = table.new_variable(U1).to_ty(interner, TyKind::General);
204-
let v2a = table.new_variable(U2).to_ty(interner, TyKind::General);
205-
let v2b = table.new_variable(U2).to_ty(interner, TyKind::General);
202+
let v0 = table.new_variable(U0).to_ty(interner);
203+
let v1 = table.new_variable(U1).to_ty(interner);
204+
let v2a = table.new_variable(U2).to_ty(interner);
205+
let v2b = table.new_variable(U2).to_ty(interner);
206206

207207
table
208208
.unify(
@@ -248,8 +248,8 @@ fn quantify_ty_under_binder() {
248248
.unify(
249249
interner,
250250
&environment0,
251-
&v0.to_ty(interner, TyKind::General),
252-
&v1.to_ty(interner, TyKind::General),
251+
&v0.to_ty(interner),
252+
&v1.to_ty(interner),
253253
)
254254
.unwrap();
255255

chalk-solve/src/infer/unify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ where
630630
.unwrap();
631631
}
632632

633-
Ok(var.to_ty(interner, kind))
633+
Ok(var.to_ty_with_kind(interner, kind))
634634
}
635635
}
636636
}

chalk-solve/src/infer/var.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,17 @@ impl<I: Interner> EnaVariable<I> {
5454
/// Convert this inference variable into a type. When using this
5555
/// method, naturally you should know from context that the kind
5656
/// of this inference variable is a type (we can't check it).
57-
pub(crate) fn to_ty(self, interner: &I, kind: TyKind) -> Ty<I> {
57+
pub(crate) fn to_ty_with_kind(self, interner: &I, kind: TyKind) -> Ty<I> {
5858
self.var.to_ty(interner, kind)
5959
}
6060

61+
/// Same as `to_ty_with_kind`, but the kind is set to `TyKind::General`.
62+
/// This should be used instead of `to_ty_with_kind` when creating a new
63+
/// inference variable (when the kind is not known).
64+
pub(crate) fn to_ty(self, interner: &I) -> Ty<I> {
65+
self.var.to_ty(interner, TyKind::General)
66+
}
67+
6168
/// Convert this inference variable into a lifetime. When using this
6269
/// method, naturally you should know from context that the kind
6370
/// of this inference variable is a lifetime (we can't check it).

chalk-solve/src/solve/slg/aggregate.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,9 +478,7 @@ impl<I: Interner> AntiUnifier<'_, '_, I> {
478478

479479
fn new_ty_variable(&mut self) -> Ty<I> {
480480
let interner = self.interner;
481-
self.infer
482-
.new_variable(self.universe)
483-
.to_ty(interner, TyKind::General)
481+
self.infer.new_variable(self.universe).to_ty(interner)
484482
}
485483

486484
fn new_lifetime_variable(&mut self) -> Lifetime<I> {

0 commit comments

Comments
 (0)