about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Lee <wlee@mochify.com>2016-08-04 00:32:49 -0400
committerWilliam Lee <wlee@mochify.com>2016-08-04 00:32:49 -0400
commit61318156f86c828b7d09decf45ea8e40aafbcc25 (patch)
tree95c4ca591b679c36ee853c8f10e7116344e1db5c
parenta0b4e6764809022433edbff275528ec2540bda73 (diff)
downloadrust-61318156f86c828b7d09decf45ea8e40aafbcc25.tar.gz
rust-61318156f86c828b7d09decf45ea8e40aafbcc25.zip
Fixes for issues #35215 and #35216
-rw-r--r--src/librustc_typeck/check/mod.rs6
-rw-r--r--src/test/compile-fail/E0060.rs2
-rw-r--r--src/test/compile-fail/E0061.rs4
-rw-r--r--src/test/compile-fail/issue-18819.rs1
-rw-r--r--src/test/compile-fail/issue-3044.rs2
-rw-r--r--src/test/compile-fail/issue-4935.rs1
-rw-r--r--src/test/compile-fail/method-call-err-msg.rs3
-rw-r--r--src/test/compile-fail/not-enough-arguments.rs1
-rw-r--r--src/test/compile-fail/overloaded-calls-bad.rs2
-rw-r--r--src/test/compile-fail/variadic-ffi-3.rs2
10 files changed, 22 insertions, 2 deletions
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index 6062bd048b3..de81ae26f5d 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -2384,6 +2384,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
                     arg_count,
                     if arg_count == 1 {" was"} else {"s were"}),
                 error_code);
+
+            err.span_label(sp, &format!("expected {}{} parameter{}",
+                                        if variadic {"at least "} else {""},
+                                        expected_count,
+                                        if expected_count == 1 {""} else {"s"}));
+
             let input_types = fn_inputs.iter().map(|i| format!("{:?}", i)).collect::<Vec<String>>();
             if input_types.len() > 0 {
                 err.note(&format!("the following parameter type{} expected: {}",
diff --git a/src/test/compile-fail/E0060.rs b/src/test/compile-fail/E0060.rs
index b4a28987497..f0aecba8afe 100644
--- a/src/test/compile-fail/E0060.rs
+++ b/src/test/compile-fail/E0060.rs
@@ -14,4 +14,6 @@ extern "C" {
 
 fn main() {
     unsafe { printf(); } //~ ERROR E0060
+                         //~| NOTE expected at least 1 parameter
+                         //~| NOTE the following parameter type was expected
 }
diff --git a/src/test/compile-fail/E0061.rs b/src/test/compile-fail/E0061.rs
index 4a8eac2a9e2..3d8622647ef 100644
--- a/src/test/compile-fail/E0061.rs
+++ b/src/test/compile-fail/E0061.rs
@@ -11,5 +11,7 @@
 fn f(a: u16, b: &str) {}
 
 fn main() {
-    f(0); //~ ERROR E0061
+    f(0); //~ ERROR E0061 
+          //~| NOTE expected 2 parameters
+          //~| NOTE the following parameter types were expected
 }
diff --git a/src/test/compile-fail/issue-18819.rs b/src/test/compile-fail/issue-18819.rs
index 3591b982414..b6bdd4c2e65 100644
--- a/src/test/compile-fail/issue-18819.rs
+++ b/src/test/compile-fail/issue-18819.rs
@@ -25,4 +25,5 @@ fn print_x(_: &Foo<Item=bool>, extra: &str) {
 fn main() {
     print_x(X);  //~error this function takes 2 parameters but 1 parameter was supplied
     //~^ NOTE the following parameter types were expected: &Foo<Item=bool>, &str
+    //~| NOTE expected 2 parameters
 }
diff --git a/src/test/compile-fail/issue-3044.rs b/src/test/compile-fail/issue-3044.rs
index 68046056fb3..144ceafdbfc 100644
--- a/src/test/compile-fail/issue-3044.rs
+++ b/src/test/compile-fail/issue-3044.rs
@@ -15,6 +15,6 @@ fn main() {
     });
     //~^^ ERROR this function takes 2 parameters but 1 parameter was supplied
     //~^^^ NOTE the following parameter types were expected
-    //
+    //~| NOTE expected 2 parameters
     // the first error is, um, non-ideal.
 }
diff --git a/src/test/compile-fail/issue-4935.rs b/src/test/compile-fail/issue-4935.rs
index 438d238b6fe..9ca4de7878c 100644
--- a/src/test/compile-fail/issue-4935.rs
+++ b/src/test/compile-fail/issue-4935.rs
@@ -13,3 +13,4 @@
 fn foo(a: usize) {}
 fn main() { foo(5, 6) } //~ ERROR this function takes 1 parameter but 2 parameters were supplied
 //~^ NOTE the following parameter type was expected
+//~| NOTE expected 1 parameter
diff --git a/src/test/compile-fail/method-call-err-msg.rs b/src/test/compile-fail/method-call-err-msg.rs
index 212c09364cf..bcf676dbede 100644
--- a/src/test/compile-fail/method-call-err-msg.rs
+++ b/src/test/compile-fail/method-call-err-msg.rs
@@ -20,10 +20,13 @@ impl Foo {
 fn main() {
     let x = Foo;
     x.zero(0)   //~ ERROR this function takes 0 parameters but 1 parameter was supplied
+     //~^ NOTE expected 0 parameters
      .one()     //~ ERROR this function takes 1 parameter but 0 parameters were supplied
      //~^ NOTE the following parameter type was expected
+     //~| NOTE expected 1 parameter
      .two(0);   //~ ERROR this function takes 2 parameters but 1 parameter was supplied
      //~^ NOTE the following parameter types were expected
+     //~| NOTE expected 2 parameters
 
     let y = Foo;
     y.zero()
diff --git a/src/test/compile-fail/not-enough-arguments.rs b/src/test/compile-fail/not-enough-arguments.rs
index 1f5a54477dd..8dcde2cf48c 100644
--- a/src/test/compile-fail/not-enough-arguments.rs
+++ b/src/test/compile-fail/not-enough-arguments.rs
@@ -20,4 +20,5 @@ fn main() {
   foo(1, 2, 3);
   //~^ ERROR this function takes 4 parameters but 3
   //~^^ NOTE the following parameter types were expected
+  //~| NOTE expected 4 parameters
 }
diff --git a/src/test/compile-fail/overloaded-calls-bad.rs b/src/test/compile-fail/overloaded-calls-bad.rs
index 8763fb0913a..5865d93e128 100644
--- a/src/test/compile-fail/overloaded-calls-bad.rs
+++ b/src/test/compile-fail/overloaded-calls-bad.rs
@@ -42,7 +42,9 @@ fn main() {
     let ans = s();
     //~^ ERROR this function takes 1 parameter but 0 parameters were supplied
     //~| NOTE the following parameter type was expected
+    //~| NOTE expected 1 parameter
     let ans = s("burma", "shave");
     //~^ ERROR this function takes 1 parameter but 2 parameters were supplied
     //~| NOTE the following parameter type was expected
+    //~| NOTE expected 1 parameter
 }
diff --git a/src/test/compile-fail/variadic-ffi-3.rs b/src/test/compile-fail/variadic-ffi-3.rs
index d8620ead836..cc9a7c84ede 100644
--- a/src/test/compile-fail/variadic-ffi-3.rs
+++ b/src/test/compile-fail/variadic-ffi-3.rs
@@ -18,8 +18,10 @@ fn main() {
     unsafe {
         foo(); //~ ERROR: this function takes at least 2 parameters but 0 parameters were supplied
         //~^ NOTE the following parameter types were expected
+        //~| NOTE expected at least 2 parameters
         foo(1); //~ ERROR: this function takes at least 2 parameters but 1 parameter was supplied
         //~^ NOTE the following parameter types were expected
+        //~| NOTE expected at least 2 parameters
 
         let x: unsafe extern "C" fn(f: isize, x: u8) = foo;
         //~^ ERROR: mismatched types