(iter: Iter)
| 50 | } |
| 51 | |
| 52 | pub fn parse(iter: Iter) -> Result<Expr> { |
| 53 | match &iter.next() { |
| 54 | Some(TokenTree::Ident(i)) if i.to_string() == "stable" => parse_stable(iter), |
| 55 | Some(TokenTree::Ident(i)) if i.to_string() == "beta" => Ok(Expr::Beta), |
| 56 | Some(TokenTree::Ident(i)) if i.to_string() == "nightly" => parse_nightly(iter), |
| 57 | Some(TokenTree::Ident(i)) if i.to_string() == "since" => parse_since(i, iter), |
| 58 | Some(TokenTree::Ident(i)) if i.to_string() == "before" => parse_before(i, iter), |
| 59 | Some(TokenTree::Ident(i)) if i.to_string() == "not" => parse_not(i, iter), |
| 60 | Some(TokenTree::Ident(i)) if i.to_string() == "any" => parse_any(i, iter), |
| 61 | Some(TokenTree::Ident(i)) if i.to_string() == "all" => parse_all(i, iter), |
| 62 | unexpected => { |
| 63 | let span = unexpected |
| 64 | .as_ref() |
| 65 | .map_or_else(Span::call_site, TokenTree::span); |
| 66 | Err(Error::new(span, "expected one of `stable`, `beta`, `nightly`, `since`, `before`, `not`, `any`, `all`")) |
| 67 | } |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | fn parse_nightly(iter: Iter) -> Result<Expr> { |
| 72 | let paren = match token::parse_optional_paren(iter) { |
no test coverage detected