build(rust): vendor googletest crate
This commit was merged in pull request #76.
This commit is contained in:
1 parent
a6fe84190e
commit
6887b104d6
576 files changed
+284290
-2
No files matched your search
@@ -0,0 +1,34 @@
|
||||
use crate::error::{Error, Result};
|
||||
use crate::iter::Iter;
|
||||
use crate::token;
|
||||
use proc_macro::Group;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub struct Release {
|
||||
pub minor: u16,
|
||||
pub patch: Option<u16>,
|
||||
}
|
||||
|
||||
pub fn parse(paren: Group, iter: Iter) -> Result<Release> {
|
||||
try_parse(iter).map_err(|()| Error::group(paren, "expected rustc release number, like 1.31"))
|
||||
}
|
||||
|
||||
fn try_parse(iter: Iter) -> Result<Release, ()> {
|
||||
let major_minor = token::parse_literal(iter).map_err(drop)?;
|
||||
let string = major_minor.to_string();
|
||||
|
||||
if !string.starts_with("1.") {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
let minor: u16 = string[2..].parse().map_err(drop)?;
|
||||
|
||||
let patch = if token::parse_optional_punct(iter, '.').is_some() {
|
||||
let int = token::parse_literal(iter).map_err(drop)?;
|
||||
Some(int.to_string().parse().map_err(drop)?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
Ok(Release { minor, patch })
|
||||
}
|
||||
Reference in new issue
Block a user