about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_typeck/check/intrinsic.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc_typeck/check/intrinsic.rs b/src/librustc_typeck/check/intrinsic.rs
index 83ac406119e..e75e512594c 100644
--- a/src/librustc_typeck/check/intrinsic.rs
+++ b/src/librustc_typeck/check/intrinsic.rs
@@ -408,6 +408,13 @@ pub fn check_platform_intrinsic_type(ccx: &CrateCtxt,
                     let mut structural_to_nomimal = HashMap::new();
 
                     let sig = tcx.no_late_bound_regions(i_ty.ty.fn_sig()).unwrap();
+                    if intr.inputs.len() != sig.inputs.len() {
+                        span_err!(tcx.sess, it.span, E0444,
+                                  "platform-specific intrinsic has invalid number of \
+                                   arguments: found {}, expected {}",
+                                  intr.inputs.len(), sig.inputs.len());
+                        return
+                    }
                     let input_pairs = intr.inputs.iter().zip(&sig.inputs);
                     for (i, (expected_arg, arg)) in input_pairs.enumerate() {
                         match_intrinsic_type_to_type(tcx, &format!("argument {}", i + 1), it.span,