about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Hietala <tradet.h@gmail.com>2014-07-18 20:39:38 +0200
committerJonas Hietala <tradet.h@gmail.com>2014-07-18 20:39:38 +0200
commit820a55857a132a14f5a69960f7cfbeec39b5360f (patch)
tree56f9aaf634a35365acb680d55cdeeeb66321c353
parent18717fcf6886b803e04bbe21689fd61becab1015 (diff)
downloadrust-820a55857a132a14f5a69960f7cfbeec39b5360f.tar.gz
rust-820a55857a132a14f5a69960f7cfbeec39b5360f.zip
Special case for 0 arguments given in format!
-rw-r--r--src/libsyntax/ext/format.rs8
-rw-r--r--src/test/compile-fail/ifmt-bad-arg.rs10
2 files changed, 11 insertions, 7 deletions
diff --git a/src/libsyntax/ext/format.rs b/src/libsyntax/ext/format.rs
index d629bafe2b1..4b245f2c9fd 100644
--- a/src/libsyntax/ext/format.rs
+++ b/src/libsyntax/ext/format.rs
@@ -216,10 +216,10 @@ impl<'a, 'b> Context<'a, 'b> {
     }
 
     fn describe_num_args(&self) -> String {
-        if self.args.len() == 1 {
-            "there is 1 argument".to_string()
-        } else {
-            format!("there are {} arguments", self.args.len())
+        match self.args.len() {
+            0 => "no arguments given".to_string(),
+            1 => "there is 1 argument".to_string(),
+            x => format!("there are {} arguments", x),
         }
     }
 
diff --git a/src/test/compile-fail/ifmt-bad-arg.rs b/src/test/compile-fail/ifmt-bad-arg.rs
index 08df96d74e6..6829b1e2721 100644
--- a/src/test/compile-fail/ifmt-bad-arg.rs
+++ b/src/test/compile-fail/ifmt-bad-arg.rs
@@ -32,13 +32,17 @@ fn main() {
     // bad number of arguments, see #15780
 
     format!("{0}");
-    //^~ ERROR invalid reference to argument `0` (there are 0 arguments)
+    //~^ ERROR invalid reference to argument `0` (no arguments given)
 
     format!("{0} {1}", 1);
-    //^~ ERROR invalid reference to argument `1` (there is 1 argument)
+    //~^ ERROR invalid reference to argument `1` (there is 1 argument)
 
     format!("{0} {1} {2}", 1, 2);
-    //^~ ERROR invalid reference to argument `2` (there are 2 arguments)
+    //~^ ERROR invalid reference to argument `2` (there are 2 arguments)
+
+    format!("{0} {1}");
+    //~^ ERROR invalid reference to argument `0` (no arguments given)
+    //~^^ ERROR invalid reference to argument `1` (no arguments given)
 
     // bad syntax of the format string