diff --git a/src/libstd/fmt/mod.rs b/src/libstd/fmt/mod.rs index cad9f14bda734..37d0e2073e6c5 100644 --- a/src/libstd/fmt/mod.rs +++ b/src/libstd/fmt/mod.rs @@ -396,6 +396,7 @@ use char::Char; use rt::io::Decorator; use rt::io::mem::MemWriter; use rt::io; +use fmt::rt::{Keyword, LiteralNumber}; use str; use sys; use util; @@ -678,7 +679,7 @@ impl<'self> Formatter<'self> { // offsetted value for s in selectors.iter() { match s.selector { - Right(val) if value == val => { + LiteralNumber(val) if value == val => { return self.runplural(value, s.result); } _ => {} @@ -690,17 +691,17 @@ impl<'self> Formatter<'self> { let value = value - match offset { Some(i) => i, None => 0 }; for s in selectors.iter() { let run = match s.selector { - Left(parse::Zero) => value == 0, - Left(parse::One) => value == 1, - Left(parse::Two) => value == 2, + Keyword(parse::Zero) => value == 0, + Keyword(parse::One) => value == 1, + Keyword(parse::Two) => value == 2, // XXX: Few/Many should have a user-specified boundary // One possible option would be in the function // pointer of the 'arg: Argument' struct. - Left(parse::Few) => value < 8, - Left(parse::Many) => value >= 8, + Keyword(parse::Few) => value < 8, + Keyword(parse::Many) => value >= 8, - Right(*) => false + LiteralNumber(*) => false }; if run { return self.runplural(value, s.result); diff --git a/src/libstd/fmt/rt.rs b/src/libstd/fmt/rt.rs index 90763836fc6b6..b973412da00f3 100644 --- a/src/libstd/fmt/rt.rs +++ b/src/libstd/fmt/rt.rs @@ -17,7 +17,6 @@ #[allow(missing_doc)]; #[doc(hidden)]; -use either::Either; use fmt::parse; use option::Option; @@ -51,8 +50,13 @@ pub enum Method<'self> { Select(&'self [SelectArm<'self>], &'self [Piece<'self>]), } +pub enum PluralSelector{ + Keyword(parse::PluralKeyword), + LiteralNumber(uint) +} + pub struct PluralArm<'self> { - selector: Either, + selector: PluralSelector, result: &'self [Piece<'self>], }