Skip to content

Commit 8040f4a

Browse files
committed
Replace make_binders by the now equivalent make_only_type_binders
1 parent 8ce6fea commit 8040f4a

File tree

2 files changed

+22
-35
lines changed

2 files changed

+22
-35
lines changed

crates/hir_ty/src/traits/chalk.rs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,14 @@ use super::ChalkContext;
1717
use crate::{
1818
db::HirDatabase,
1919
display::HirDisplay,
20-
from_assoc_type_id,
20+
from_assoc_type_id, make_only_type_binders,
2121
method_resolution::{TyFingerprint, ALL_FLOAT_FPS, ALL_INT_FPS},
2222
to_assoc_type_id, to_chalk_trait_id,
2323
utils::generics,
2424
AliasEq, AliasTy, BoundVar, CallableDefId, DebruijnIndex, FnDefId, ProjectionTy, Substitution,
2525
TraitRef, TraitRefExt, Ty, TyBuilder, TyExt, TyKind, WhereClause,
2626
};
27-
use mapping::{
28-
convert_where_clauses, generic_predicate_to_inline_bound, make_binders, TypeAliasAsValue,
29-
};
27+
use mapping::{convert_where_clauses, generic_predicate_to_inline_bound, TypeAliasAsValue};
3028

3129
pub use self::interner::Interner;
3230
pub(crate) use self::interner::*;
@@ -187,8 +185,11 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
187185
let (datas, binders) = (*datas).as_ref().into_value_and_skipped_binders();
188186
let data = &datas.impl_traits[idx as usize];
189187
let bound = OpaqueTyDatumBound {
190-
bounds: make_binders(data.bounds.skip_binders().iter().cloned().collect(), 1),
191-
where_clauses: make_binders(vec![], 0),
188+
bounds: make_only_type_binders(
189+
1,
190+
data.bounds.skip_binders().iter().cloned().collect(),
191+
),
192+
where_clauses: make_only_type_binders(0, vec![]),
192193
};
193194
chalk_ir::Binders::new(binders, bound)
194195
}
@@ -236,25 +237,25 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
236237
.intern(&Interner),
237238
});
238239
let bound = OpaqueTyDatumBound {
239-
bounds: make_binders(
240+
bounds: make_only_type_binders(
241+
1,
240242
vec![
241243
crate::wrap_empty_binders(impl_bound),
242244
crate::wrap_empty_binders(proj_bound),
243245
],
244-
1,
245246
),
246-
where_clauses: make_binders(vec![], 0),
247+
where_clauses: make_only_type_binders(0, vec![]),
247248
};
248249
// The opaque type has 1 parameter.
249-
make_binders(bound, 1)
250+
make_only_type_binders(1, bound)
250251
} else {
251252
// If failed to find Symbol’s value as variable is void: Future::Output, return empty bounds as fallback.
252253
let bound = OpaqueTyDatumBound {
253-
bounds: make_binders(vec![], 0),
254-
where_clauses: make_binders(vec![], 0),
254+
bounds: make_only_type_binders(0, vec![]),
255+
where_clauses: make_only_type_binders(0, vec![]),
255256
};
256257
// The opaque type has 1 parameter.
257-
make_binders(bound, 1)
258+
make_only_type_binders(1, bound)
258259
}
259260
}
260261
};
@@ -291,15 +292,15 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
291292
argument_types: sig.params().iter().cloned().collect(),
292293
return_type: sig.ret().clone(),
293294
};
294-
make_binders(io.shifted_in(&Interner), 0)
295+
make_only_type_binders(0, io.shifted_in(&Interner))
295296
}
296297
fn closure_upvars(
297298
&self,
298299
_closure_id: chalk_ir::ClosureId<Interner>,
299300
_substs: &chalk_ir::Substitution<Interner>,
300301
) -> chalk_ir::Binders<chalk_ir::Ty<Interner>> {
301302
let ty = TyBuilder::unit();
302-
make_binders(ty, 0)
303+
make_only_type_binders(0, ty)
303304
}
304305
fn closure_fn_substitution(
305306
&self,
@@ -404,7 +405,7 @@ pub(crate) fn associated_ty_data_query(
404405
trait_id: to_chalk_trait_id(trait_),
405406
id,
406407
name: type_alias,
407-
binders: make_binders(bound_data, generic_params.len()),
408+
binders: make_only_type_binders(generic_params.len(), bound_data),
408409
};
409410
Arc::new(datum)
410411
}
@@ -437,7 +438,7 @@ pub(crate) fn trait_datum_query(
437438
lang_attr(db.upcast(), trait_).and_then(|name| well_known_trait_from_lang_attr(&name));
438439
let trait_datum = TraitDatum {
439440
id: trait_id,
440-
binders: make_binders(trait_datum_bound, bound_vars.len(&Interner)),
441+
binders: make_only_type_binders(bound_vars.len(&Interner), trait_datum_bound),
441442
flags,
442443
associated_ty_ids,
443444
well_known,
@@ -506,7 +507,7 @@ pub(crate) fn struct_datum_query(
506507
// FIXME set ADT kind
507508
kind: rust_ir::AdtKind::Struct,
508509
id: struct_id,
509-
binders: make_binders(struct_datum_bound, num_params),
510+
binders: make_only_type_binders(num_params, struct_datum_bound),
510511
flags,
511512
};
512513
Arc::new(struct_datum)
@@ -575,7 +576,7 @@ fn impl_def_datum(
575576
.collect();
576577
debug!("impl_datum: {:?}", impl_datum_bound);
577578
let impl_datum = ImplDatum {
578-
binders: make_binders(impl_datum_bound, bound_vars.len(&Interner)),
579+
binders: make_only_type_binders(bound_vars.len(&Interner), impl_datum_bound),
579580
impl_type,
580581
polarity,
581582
associated_ty_value_ids,
@@ -635,13 +636,13 @@ pub(crate) fn fn_def_datum_query(
635636
let where_clauses = convert_where_clauses(db, callable_def.into(), &bound_vars);
636637
let bound = rust_ir::FnDefDatumBound {
637638
// Note: Chalk doesn't actually use this information yet as far as I am aware, but we provide it anyway
638-
inputs_and_output: make_binders(
639+
inputs_and_output: make_only_type_binders(
640+
0,
639641
rust_ir::FnDefInputsAndOutputDatum {
640642
argument_types: sig.params().iter().cloned().collect(),
641643
return_type: sig.ret().clone(),
642644
}
643645
.shifted_in(&Interner),
644-
0,
645646
),
646647
where_clauses,
647648
};

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,6 @@ impl ToChalk for TypeAliasAsValue {
7171
}
7272
}
7373

74-
pub(super) fn make_binders<T>(value: T, num_vars: usize) -> chalk_ir::Binders<T>
75-
where
76-
T: HasInterner<Interner = Interner>,
77-
{
78-
chalk_ir::Binders::new(
79-
chalk_ir::VariableKinds::from_iter(
80-
&Interner,
81-
std::iter::repeat(chalk_ir::VariableKind::Ty(chalk_ir::TyVariableKind::General))
82-
.take(num_vars),
83-
),
84-
value,
85-
)
86-
}
87-
8874
pub(super) fn convert_where_clauses(
8975
db: &dyn HirDatabase,
9076
def: GenericDefId,

0 commit comments

Comments
 (0)