diff options
| author | varkor <github@varkor.com> | 2019-04-26 00:27:33 +0100 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2019-04-26 21:09:32 +0100 |
| commit | a3470c61890710421ddb82fbe72b1ca8fdc8e078 (patch) | |
| tree | 4747508fb75281c1a9b812778a92b4194e12056f /src/librustc_codegen_llvm | |
| parent | 283ca7616c69a6c893b7d9dd157fa9df4a746b72 (diff) | |
| download | rust-a3470c61890710421ddb82fbe72b1ca8fdc8e078.tar.gz rust-a3470c61890710421ddb82fbe72b1ca8fdc8e078.zip | |
Update handling of Tuple
Diffstat (limited to 'src/librustc_codegen_llvm')
| -rw-r--r-- | src/librustc_codegen_llvm/abi.rs | 8 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/debuginfo/metadata.rs | 3 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/debuginfo/mod.rs | 2 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/librustc_codegen_llvm/abi.rs b/src/librustc_codegen_llvm/abi.rs index 348616790b0..2c4a1ded97f 100644 --- a/src/librustc_codegen_llvm/abi.rs +++ b/src/librustc_codegen_llvm/abi.rs @@ -426,9 +426,9 @@ impl<'tcx> FnTypeExt<'tcx> for FnType<'tcx, Ty<'tcx>> { assert!(!sig.c_variadic && extra_args.is_empty()); match sig.inputs().last().unwrap().sty { - ty::Tuple(ref tupled_arguments) => { + ty::Tuple(tupled_arguments) => { inputs = &sig.inputs()[0..sig.inputs().len() - 1]; - tupled_arguments + tupled_arguments.iter().map(|k| k.expect_ty()).collect() } _ => { bug!("argument to function with \"rust-call\" ABI \ @@ -437,7 +437,7 @@ impl<'tcx> FnTypeExt<'tcx> for FnType<'tcx, Ty<'tcx>> { } } else { assert!(sig.c_variadic || extra_args.is_empty()); - extra_args + extra_args.to_vec() }; let target = &cx.sess().target.target; @@ -587,7 +587,7 @@ impl<'tcx> FnTypeExt<'tcx> for FnType<'tcx, Ty<'tcx>> { let mut fn_ty = FnType { ret: arg_of(sig.output(), None), - args: inputs.iter().chain(extra_args).enumerate().map(|(i, ty)| { + args: inputs.iter().cloned().chain(extra_args).enumerate().map(|(i, ty)| { arg_of(ty, Some(i)) }).collect(), c_variadic: sig.c_variadic, diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs index 31348b99c5a..765992fd2b7 100644 --- a/src/librustc_codegen_llvm/debuginfo/metadata.rs +++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs @@ -722,9 +722,10 @@ pub fn type_metadata( } }, ty::Tuple(ref elements) => { + let tys: Vec<_> = elements.iter().map(|k| k.expect_ty()).collect(); prepare_tuple_metadata(cx, t, - &elements[..], + &tys, unique_type_id, usage_site_span).finalize(cx) } diff --git a/src/librustc_codegen_llvm/debuginfo/mod.rs b/src/librustc_codegen_llvm/debuginfo/mod.rs index cb00cca0f9c..2154ac9b1d2 100644 --- a/src/librustc_codegen_llvm/debuginfo/mod.rs +++ b/src/librustc_codegen_llvm/debuginfo/mod.rs @@ -392,7 +392,7 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { if let ty::Tuple(args) = sig.inputs()[sig.inputs().len() - 1].sty { signature.extend( args.iter().map(|argument_type| { - Some(type_metadata(cx, argument_type, syntax_pos::DUMMY_SP)) + Some(type_metadata(cx, argument_type.expect_ty(), syntax_pos::DUMMY_SP)) }) ); } |
