use List<Ty<'tcx>> for tuples

This commit is contained in:
lcnr 2022-02-07 16:06:31 +01:00
parent 7e80bc3c8d
commit d34bcdd49c
2 changed files with 5 additions and 6 deletions

View File

@ -117,7 +117,7 @@ pub(crate) fn easy_call(
.unzip(); .unzip();
let return_layout = self.layout_of(return_ty); let return_layout = self.layout_of(return_ty);
let return_tys = if let ty::Tuple(tup) = return_ty.kind() { let return_tys = if let ty::Tuple(tup) = return_ty.kind() {
tup.types().map(|ty| AbiParam::new(self.clif_type(ty).unwrap())).collect() tup.iter().map(|ty| AbiParam::new(self.clif_type(ty).unwrap())).collect()
} else { } else {
vec![AbiParam::new(self.clif_type(return_ty).unwrap())] vec![AbiParam::new(self.clif_type(return_ty).unwrap())]
}; };
@ -199,7 +199,7 @@ enum ArgKind<'tcx> {
}; };
let mut params = Vec::new(); let mut params = Vec::new();
for (i, _arg_ty) in tupled_arg_tys.types().enumerate() { for (i, _arg_ty) in tupled_arg_tys.iter().enumerate() {
let arg_abi = arg_abis_iter.next().unwrap(); let arg_abi = arg_abis_iter.next().unwrap();
let param = let param =
cvalue_for_param(fx, Some(local), Some(i), arg_abi, &mut block_params_iter); cvalue_for_param(fx, Some(local), Some(i), arg_abi, &mut block_params_iter);

View File

@ -90,10 +90,9 @@ fn clif_pair_type_from_ty<'tcx>(
ty: Ty<'tcx>, ty: Ty<'tcx>,
) -> Option<(types::Type, types::Type)> { ) -> Option<(types::Type, types::Type)> {
Some(match ty.kind() { Some(match ty.kind() {
ty::Tuple(substs) if substs.len() == 2 => { ty::Tuple(types) if types.len() == 2 => {
let mut types = substs.types(); let a = clif_type_from_ty(tcx, types[0])?;
let a = clif_type_from_ty(tcx, types.next().unwrap())?; let b = clif_type_from_ty(tcx, types[1])?;
let b = clif_type_from_ty(tcx, types.next().unwrap())?;
if a.is_vector() || b.is_vector() { if a.is_vector() || b.is_vector() {
return None; return None;
} }