diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 4f8c11d8285..47ffa9359d8 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -1124,11 +1124,12 @@ impl<'self> fmt::Default for Sidebar<'self> {
write!(w, "{name}
",
ty = short,
+ tysel = short,
class = class,
curty = shortty(cur),
name = item.as_slice());
diff --git a/src/libsyntax/ext/format.rs b/src/libsyntax/ext/format.rs
index d33ae069112..ef3879f56ae 100644
--- a/src/libsyntax/ext/format.rs
+++ b/src/libsyntax/ext/format.rs
@@ -22,7 +22,6 @@ use std::vec;
#[deriving(Eq)]
enum ArgumentType {
- Unknown,
Known(@str),
Unsigned,
String,
@@ -153,14 +152,13 @@ impl Context {
parse::ArgumentIs(i) => Left(i),
parse::ArgumentNamed(s) => Right(s.to_managed()),
};
- let ty = if arg.format.ty == "" {
- Unknown
- } else { Known(arg.format.ty.to_managed()) };
- self.verify_arg_type(pos, ty);
// and finally the method being applied
match arg.method {
- None => {}
+ None => {
+ let ty = Known(arg.format.ty.to_managed());
+ self.verify_arg_type(pos, ty);
+ }
Some(ref method) => { self.verify_method(pos, *method); }
}
}
@@ -253,7 +251,7 @@ impl Context {
return;
}
self.verify_same(self.args[arg].span, ty, self.arg_types[arg]);
- if ty != Unknown || self.arg_types[arg].is_none() {
+ if self.arg_types[arg].is_none() {
self.arg_types[arg] = Some(ty);
}
}
@@ -269,7 +267,7 @@ impl Context {
};
self.verify_same(span, ty,
self.name_types.find(&name).map(|&x| *x));
- if ty != Unknown || !self.name_types.contains_key(&name) {
+ if !self.name_types.contains_key(&name) {
self.name_types.insert(name, ty);
}
// Assign this named argument a slot in the arguments array if
@@ -292,9 +290,8 @@ impl Context {
/// that: `Some(None) == Some(Some(x))`
fn verify_same(&self, sp: Span, ty: ArgumentType,
before: Option) {
- if ty == Unknown { return }
let cur = match before {
- Some(Unknown) | None => return,
+ None => return,
Some(t) => t,
};
if ty == cur { return }
@@ -649,9 +646,9 @@ impl Context {
};
let fmt_trait = match ty {
- Unknown => "Default",
Known(tyname) => {
match tyname.as_slice() {
+ "" => "Default",
"?" => "Poly",
"b" => "Bool",
"c" => "Char",
diff --git a/src/test/compile-fail/ifmt-bad-arg.rs b/src/test/compile-fail/ifmt-bad-arg.rs
index f9552725af3..aace3815e84 100644
--- a/src/test/compile-fail/ifmt-bad-arg.rs
+++ b/src/test/compile-fail/ifmt-bad-arg.rs
@@ -65,8 +65,8 @@ fn main() {
// format strings because otherwise the "internal pointer of which argument
// is next" would be invalidated if different cases had different numbers of
// arguments.
- format!("{0, select, other{{}}}", "a"); //~ ERROR: cannot use implicit
- format!("{0, plural, other{{}}}", 1); //~ ERROR: cannot use implicit
+ format!("{1, select, other{{}}}", 1, "a"); //~ ERROR: cannot use implicit
+ format!("{1, plural, other{{}}}", 1, 1); //~ ERROR: cannot use implicit
format!("{0, plural, other{{1:.*d}}}", 1, 2); //~ ERROR: cannot use implicit
format!("foo } bar"); //~ ERROR: unmatched `}` found
diff --git a/src/test/run-pass/ifmt.rs b/src/test/run-pass/ifmt.rs
index 6ca21c6c5a1..2f5d4380f2e 100644
--- a/src/test/run-pass/ifmt.rs
+++ b/src/test/run-pass/ifmt.rs
@@ -85,7 +85,6 @@ pub fn main() {
t!(format!("{1} {0}", 0, 1), "1 0");
t!(format!("{foo} {bar}", foo=0, bar=1), "0 1");
t!(format!("{foo} {1} {bar} {0}", 0, 1, foo=2, bar=3), "2 1 3 0");
- t!(format!("{} {0:s}", "a"), "a a");
t!(format!("{} {0}", "a"), "a a");
t!(format!("{foo_bar}", foo_bar=1), "1");
@@ -98,8 +97,8 @@ pub fn main() {
t!(format!("{0, select, a{a#} b{b#} c{c#} other{d#}}", "b"), "bb");
t!(format!("{0, select, a{a#} b{b#} c{c#} other{d#}}", "c"), "cc");
t!(format!("{0, select, a{a#} b{b#} c{c#} other{d#}}", "d"), "dd");
- t!(format!("{1, select, a{#{0:s}} other{#{1}}}", "b", "a"), "ab");
- t!(format!("{1, select, a{#{0}} other{#{1}}}", "c", "b"), "bb");
+ t!(format!("{1, select, a{#{0:s}} other{#}}", "b", "a"), "ab");
+ t!(format!("{1, select, a{#{0}} other{#}}", "c", "b"), "b");
// Formatting strings and their arguments
t!(format!("{:s}", "a"), "a");