Merge pull request #4243 from erickt/incoming
Fix a bug in Result::unwrap_err (and minor cleanup)
This commit is contained in:
@@ -234,7 +234,7 @@ impl<T, E> Result<T, E> {
|
|||||||
pure fn unwrap(self) -> T { unwrap(self) }
|
pure fn unwrap(self) -> T { unwrap(self) }
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn unwrap_err(self) -> T { unwrap(self) }
|
pure fn unwrap_err(self) -> E { unwrap_err(self) }
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn chain<U>(self, op: fn(T) -> Result<U,E>) -> Result<U,E> {
|
pure fn chain<U>(self, op: fn(T) -> Result<U,E>) -> Result<U,E> {
|
||||||
|
|||||||
@@ -385,36 +385,22 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
|
|||||||
None => Err(~"Invalid year")
|
None => Err(~"Invalid year")
|
||||||
},
|
},
|
||||||
'c' => {
|
'c' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'a', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ' '))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'b', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ' '))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'e', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ' '))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'T', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ' '))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'Y', tm))
|
||||||
move parse_type(s, pos, 'a', tm),
|
|
||||||
|pos| parse_char(s, pos, ' ')),
|
|
||||||
|pos| parse_type(s, pos, 'b', tm)),
|
|
||||||
|pos| parse_char(s, pos, ' ')),
|
|
||||||
|pos| parse_type(s, pos, 'e', tm)),
|
|
||||||
|pos| parse_char(s, pos, ' ')),
|
|
||||||
|pos| parse_type(s, pos, 'T', tm)),
|
|
||||||
|pos| parse_char(s, pos, ' ')),
|
|
||||||
|pos| parse_type(s, pos, 'Y', tm))
|
|
||||||
}
|
}
|
||||||
'D' | 'x' => {
|
'D' | 'x' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'm', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '/'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'd', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '/'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'y', tm))
|
||||||
move parse_type(s, pos, 'm', tm),
|
|
||||||
|pos| parse_char(s, pos, '/')),
|
|
||||||
|pos| parse_type(s, pos, 'd', tm)),
|
|
||||||
|pos| parse_char(s, pos, '/')),
|
|
||||||
|pos| parse_type(s, pos, 'y', tm))
|
|
||||||
}
|
}
|
||||||
'd' => match match_digits(s, pos, 2u, false) {
|
'd' => match match_digits(s, pos, 2u, false) {
|
||||||
Some(item) => { let (v, pos) = item; tm.tm_mday = v; Ok(pos) }
|
Some(item) => { let (v, pos) = item; tm.tm_mday = v; Ok(pos) }
|
||||||
@@ -425,16 +411,11 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
|
|||||||
None => Err(~"Invalid day of the month")
|
None => Err(~"Invalid day of the month")
|
||||||
},
|
},
|
||||||
'F' => {
|
'F' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'Y', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '-'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'm', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '-'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'd', tm))
|
||||||
move parse_type(s, pos, 'Y', tm),
|
|
||||||
|pos| parse_char(s, pos, '-')),
|
|
||||||
|pos| parse_type(s, pos, 'm', tm)),
|
|
||||||
|pos| parse_char(s, pos, '-')),
|
|
||||||
|pos| parse_type(s, pos, 'd', tm))
|
|
||||||
}
|
}
|
||||||
'H' => {
|
'H' => {
|
||||||
// FIXME (#2350): range check.
|
// FIXME (#2350): range check.
|
||||||
@@ -515,28 +496,18 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
|
|||||||
None => Err(~"Invalid hour")
|
None => Err(~"Invalid hour")
|
||||||
},
|
},
|
||||||
'R' => {
|
'R' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'H', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ':'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'M', tm))
|
||||||
move parse_type(s, pos, 'H', tm),
|
|
||||||
|pos| parse_char(s, pos, ':')),
|
|
||||||
|pos| parse_type(s, pos, 'M', tm))
|
|
||||||
}
|
}
|
||||||
'r' => {
|
'r' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'I', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ':'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'M', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ':'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'S', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ' '))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'p', tm))
|
||||||
move parse_type(s, pos, 'I', tm),
|
|
||||||
|pos| parse_char(s, pos, ':')),
|
|
||||||
|pos| parse_type(s, pos, 'M', tm)),
|
|
||||||
|pos| parse_char(s, pos, ':')),
|
|
||||||
|pos| parse_type(s, pos, 'S', tm)),
|
|
||||||
|pos| parse_char(s, pos, ' ')),
|
|
||||||
|pos| parse_type(s, pos, 'p', tm))
|
|
||||||
}
|
}
|
||||||
'S' => {
|
'S' => {
|
||||||
// FIXME (#2350): range check.
|
// FIXME (#2350): range check.
|
||||||
@@ -551,16 +522,11 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
|
|||||||
}
|
}
|
||||||
//'s' {}
|
//'s' {}
|
||||||
'T' | 'X' => {
|
'T' | 'X' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'H', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ':'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'M', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, ':'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'S', tm))
|
||||||
move parse_type(s, pos, 'H', tm),
|
|
||||||
|pos| parse_char(s, pos, ':')),
|
|
||||||
|pos| parse_type(s, pos, 'M', tm)),
|
|
||||||
|pos| parse_char(s, pos, ':')),
|
|
||||||
|pos| parse_type(s, pos, 'S', tm))
|
|
||||||
}
|
}
|
||||||
't' => parse_char(s, pos, '\t'),
|
't' => parse_char(s, pos, '\t'),
|
||||||
'u' => {
|
'u' => {
|
||||||
@@ -575,16 +541,11 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
'v' => {
|
'v' => {
|
||||||
// FIXME(#3724): cleanup
|
parse_type(s, pos, 'e', tm)
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '-'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'b', tm))
|
||||||
result::chain(
|
.chain(|pos| parse_char(s, pos, '-'))
|
||||||
result::chain(
|
.chain(|pos| parse_type(s, pos, 'Y', tm))
|
||||||
move parse_type(s, pos, 'e', tm),
|
|
||||||
|pos| parse_char(s, pos, '-')),
|
|
||||||
|pos| parse_type(s, pos, 'b', tm)),
|
|
||||||
|pos| parse_char(s, pos, '-')),
|
|
||||||
|pos| parse_type(s, pos, 'Y', tm))
|
|
||||||
}
|
}
|
||||||
//'W' {}
|
//'W' {}
|
||||||
'w' => {
|
'w' => {
|
||||||
|
|||||||
Reference in New Issue
Block a user