提交 4f55b52b 编写于 作者: B bors

auto merge of #15785 : treeman/rust/fix-15780, r=alexcrichton

Fix for #15780.
......@@ -215,12 +215,21 @@ fn check_positional_ok(&mut self) -> bool {
}
}
fn describe_num_args(&self) -> String {
match self.args.len() {
0 => "no arguments given".to_string(),
1 => "there is 1 argument".to_string(),
x => format!("there are {} arguments", x),
}
}
fn verify_arg_type(&mut self, arg: Position, ty: ArgumentType) {
match arg {
Exact(arg) => {
if self.args.len() <= arg {
let msg = format!("invalid reference to argument `{}` (there \
are {} arguments)", arg, self.args.len());
let msg = format!("invalid reference to argument `{}` ({:s})",
arg, self.describe_num_args());
self.ecx.span_err(self.fmtsp, msg.as_slice());
return;
}
......
......@@ -29,6 +29,21 @@ fn main() {
format!("{foo}", foo=1, foo=2); //~ ERROR: duplicate argument
format!("", foo=1, 2); //~ ERROR: positional arguments cannot follow
// bad number of arguments, see #15780
format!("{0}");
//~^ ERROR invalid reference to argument `0` (no arguments given)
format!("{0} {1}", 1);
//~^ 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)
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
format!("{"); //~ ERROR: expected `}` but string was terminated
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册