about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorzjhmale <zjhmale@gmail.com>2016-08-29 22:31:08 +0800
committerzjhmale <zjhmale@gmail.com>2016-08-30 01:36:58 +0800
commit01083baec26591a0b48752b3003fd73f4e07631e (patch)
tree0e5da0a7df02ec3ace6571776c6af18dfd8b45b7 /src
parent86dde9bbda92c02c61282b5df5d38338a798ef3b (diff)
downloadrust-01083baec26591a0b48752b3003fd73f4e07631e.tar.gz
rust-01083baec26591a0b48752b3003fd73f4e07631e.zip
Update E0089 to new error format
Diffstat (limited to 'src')
-rw-r--r--src/librustc_typeck/check/mod.rs20
-rw-r--r--src/test/compile-fail/E0089.rs4
2 files changed, 15 insertions, 9 deletions
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index fb24971c425..a8463833099 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -4427,14 +4427,18 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
             // use inference variables instead of the provided types.
             *segment = None;
         } else if !(can_omit && types.len() == 0) && types.len() < required_len {
-            let qualifier =
-                if type_defs.len() != required_len { "at least " } else { "" };
-            span_err!(self.tcx.sess, span, E0089,
-                      "too few type parameters provided: \
-                       expected {}{}, found {}",
-                      qualifier,
-                      count(required_len),
-                      count(types.len()));
+            let adjust = |len| if len > 1 { "parameters" } else { "parameter" };
+            let required_param_str = adjust(required_len);
+            let actual_param_str = adjust(types.len());
+            struct_span_err!(self.tcx.sess, span, E0089,
+                             "too few type parameters provided: \
+                              expected {} {}, found {} {}",
+                             count(required_len),
+                             required_param_str,
+                             count(types.len()),
+                             actual_param_str)
+                .span_label(span, &format!("expected {} type {}", required_len, required_param_str))
+                .emit();
         }
 
         if !bindings.is_empty() {
diff --git a/src/test/compile-fail/E0089.rs b/src/test/compile-fail/E0089.rs
index 3b52f76bf09..9ce36523709 100644
--- a/src/test/compile-fail/E0089.rs
+++ b/src/test/compile-fail/E0089.rs
@@ -11,5 +11,7 @@
 fn foo<T, U>() {}
 
 fn main() {
-    foo::<f64>(); //~ ERROR E0089
+    foo::<f64>();
+//~^ ERROR E0089
+//~| NOTE expected 2 type parameters
 }