Split out IntoIterator and non-Iterator constructors for AliasTy/AliasTerm/TraitRef/projection
This commit is contained in:
parent
58fc27f571
commit
a155c38989
@ -61,7 +61,7 @@ fn is_impl_not_trait_with_bool_out<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
.map_or(false, |assoc_item| {
|
.map_or(false, |assoc_item| {
|
||||||
let proj = Ty::new_projection(cx.tcx, assoc_item.def_id, cx.tcx.mk_args_trait(ty, []));
|
let proj = Ty::new_projection_from_args(cx.tcx, assoc_item.def_id, cx.tcx.mk_args_trait(ty, []));
|
||||||
let nty = cx.tcx.normalize_erasing_regions(cx.param_env, proj);
|
let nty = cx.tcx.normalize_erasing_regions(cx.param_env, proj);
|
||||||
|
|
||||||
nty.is_bool()
|
nty.is_bool()
|
||||||
|
@ -206,7 +206,7 @@ fn iterates_same_ty<'tcx>(cx: &LateContext<'tcx>, iter_ty: Ty<'tcx>, collect_ty:
|
|||||||
&& let Some(into_iter_item_proj) = make_projection(cx.tcx, into_iter_trait, sym::Item, [collect_ty])
|
&& let Some(into_iter_item_proj) = make_projection(cx.tcx, into_iter_trait, sym::Item, [collect_ty])
|
||||||
&& let Ok(into_iter_item_ty) = cx.tcx.try_normalize_erasing_regions(
|
&& let Ok(into_iter_item_ty) = cx.tcx.try_normalize_erasing_regions(
|
||||||
cx.param_env,
|
cx.param_env,
|
||||||
Ty::new_projection(cx.tcx, into_iter_item_proj.def_id, into_iter_item_proj.args),
|
Ty::new_projection_from_args(cx.tcx, into_iter_item_proj.def_id, into_iter_item_proj.args),
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
iter_item_ty == into_iter_item_ty
|
iter_item_ty == into_iter_item_ty
|
||||||
@ -235,7 +235,7 @@ fn is_contains_sig(cx: &LateContext<'_>, call_id: HirId, iter_expr: &Expr<'_>) -
|
|||||||
iter_trait,
|
iter_trait,
|
||||||
)
|
)
|
||||||
&& let args = cx.tcx.mk_args(&[GenericArg::from(typeck.expr_ty_adjusted(iter_expr))])
|
&& let args = cx.tcx.mk_args(&[GenericArg::from(typeck.expr_ty_adjusted(iter_expr))])
|
||||||
&& let proj_ty = Ty::new_projection(cx.tcx, iter_item.def_id, args)
|
&& let proj_ty = Ty::new_projection_from_args(cx.tcx, iter_item.def_id, args)
|
||||||
&& let Ok(item_ty) = cx.tcx.try_normalize_erasing_regions(cx.param_env, proj_ty)
|
&& let Ok(item_ty) = cx.tcx.try_normalize_erasing_regions(cx.param_env, proj_ty)
|
||||||
{
|
{
|
||||||
item_ty == EarlyBinder::bind(search_ty).instantiate(cx.tcx, cx.typeck_results().node_args(call_id))
|
item_ty == EarlyBinder::bind(search_ty).instantiate(cx.tcx, cx.typeck_results().node_args(call_id))
|
||||||
|
@ -133,7 +133,7 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
|
|||||||
} else if let Some(target_id) = cx.tcx.lang_items().deref_target() {
|
} else if let Some(target_id) = cx.tcx.lang_items().deref_target() {
|
||||||
if let Ok(deref_ty) = cx.tcx.try_normalize_erasing_regions(
|
if let Ok(deref_ty) = cx.tcx.try_normalize_erasing_regions(
|
||||||
cx.param_env,
|
cx.param_env,
|
||||||
Ty::new_projection(cx.tcx, target_id, cx.tcx.mk_args(&[GenericArg::from(indexed_ty)])),
|
Ty::new_projection_from_args(cx.tcx, target_id, cx.tcx.mk_args(&[GenericArg::from(indexed_ty)])),
|
||||||
) {
|
) {
|
||||||
if deref_ty == expr_ty {
|
if deref_ty == expr_ty {
|
||||||
let snip = snippet_with_context(cx, indexed.span, ctxt, "..", &mut app).0;
|
let snip = snippet_with_context(cx, indexed.span, ctxt, "..", &mut app).0;
|
||||||
|
@ -292,7 +292,7 @@ pub fn implements_trait_with_env_from_iter<'tcx>(
|
|||||||
let trait_ref = TraitRef::new(
|
let trait_ref = TraitRef::new(
|
||||||
tcx,
|
tcx,
|
||||||
trait_id,
|
trait_id,
|
||||||
Some(GenericArg::from(ty)).into_iter().chain(args).chain(effect_arg),
|
[GenericArg::from(ty)].into_iter().chain(args).chain(effect_arg),
|
||||||
);
|
);
|
||||||
|
|
||||||
debug_assert_matches!(
|
debug_assert_matches!(
|
||||||
@ -1126,7 +1126,7 @@ fn helper<'tcx>(
|
|||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
assert_generic_args_match(tcx, assoc_item.def_id, args);
|
assert_generic_args_match(tcx, assoc_item.def_id, args);
|
||||||
|
|
||||||
Some(AliasTy::new(tcx, assoc_item.def_id, args))
|
Some(AliasTy::new_from_args(tcx, assoc_item.def_id, args))
|
||||||
}
|
}
|
||||||
helper(
|
helper(
|
||||||
tcx,
|
tcx,
|
||||||
@ -1165,7 +1165,7 @@ fn helper<'tcx>(tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>, ty: AliasTy<'tcx>)
|
|||||||
);
|
);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
match tcx.try_normalize_erasing_regions(param_env, Ty::new_projection(tcx, ty.def_id, ty.args)) {
|
match tcx.try_normalize_erasing_regions(param_env, Ty::new_projection_from_args(tcx, ty.def_id, ty.args)) {
|
||||||
Ok(ty) => Some(ty),
|
Ok(ty) => Some(ty),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
debug_assert!(false, "failed to normalize type `{ty}`: {e:#?}");
|
debug_assert!(false, "failed to normalize type `{ty}`: {e:#?}");
|
||||||
@ -1289,7 +1289,7 @@ fn helper<'tcx>(tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>, ty: AliasTy<'tcx>)
|
|||||||
.infer_ctxt()
|
.infer_ctxt()
|
||||||
.build()
|
.build()
|
||||||
.at(&cause, param_env)
|
.at(&cause, param_env)
|
||||||
.query_normalize(Ty::new_projection(tcx, ty.def_id, ty.args))
|
.query_normalize(Ty::new_projection_from_args(tcx, ty.def_id, ty.args))
|
||||||
{
|
{
|
||||||
Ok(ty) => Some(ty.value),
|
Ok(ty) => Some(ty.value),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user