aboutsummaryrefslogtreecommitdiff
path: root/src/ast.rs
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-11-02 18:45:24 -0800
committerHaibo Huang <hhb@google.com>2020-11-02 18:45:24 -0800
commitae47280e989846edaae234a1f952fbf4faf4c088 (patch)
tree099d1f4a952fa4938b84de022c2497e0dc012950 /src/ast.rs
parentb3b422d2500290b6459af803c74754dee9355c3a (diff)
downloadconst_fn-ae47280e989846edaae234a1f952fbf4faf4c088.tar.gz
Upgrade rust/crates/const_fn to 0.4.3
Test: make Change-Id: I6d1557fc976b54f172237ac5968413751b9fe1d8
Diffstat (limited to 'src/ast.rs')
-rw-r--r--src/ast.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/ast.rs b/src/ast.rs
index b9acee5..b156493 100644
--- a/src/ast.rs
+++ b/src/ast.rs
@@ -1,7 +1,7 @@
use proc_macro::{Delimiter, Literal, Span, TokenStream, TokenTree};
-use std::iter::Peekable;
use crate::{
+ iter::TokenIter,
to_tokens::ToTokens,
utils::{parse_as_empty, tt_span},
Result,
@@ -15,7 +15,7 @@ pub(crate) struct Func {
}
pub(crate) fn parse_input(input: TokenStream) -> Result<Func> {
- let mut input = input.into_iter().peekable();
+ let mut input = TokenIter::new(input);
let attrs = parse_attrs(&mut input)?;
let sig = parse_signature(&mut input);
@@ -64,19 +64,19 @@ impl ToTokens for Func {
}
}
-fn parse_signature(input: &mut Peekable<impl Iterator<Item = TokenTree>>) -> Vec<TokenTree> {
+fn parse_signature(input: &mut TokenIter) -> Vec<TokenTree> {
let mut sig = Vec::new();
loop {
match input.peek() {
Some(TokenTree::Group(group)) if group.delimiter() == Delimiter::Brace => break,
None => break,
- _ => sig.push(input.next().unwrap()),
+ Some(_) => sig.push(input.next().unwrap()),
}
}
sig
}
-fn parse_attrs(input: &mut Peekable<impl Iterator<Item = TokenTree>>) -> Result<Vec<Attribute>> {
+fn parse_attrs(input: &mut TokenIter) -> Result<Vec<Attribute>> {
let mut attrs = Vec::new();
loop {
let pound_token = match input.peek() {
@@ -109,16 +109,16 @@ impl ToTokens for Attribute {
}
pub(crate) struct LitStr {
- token: Literal,
+ pub(crate) token: Literal,
value: String,
}
impl LitStr {
- pub(crate) fn new(token: &Literal) -> Result<Self> {
+ pub(crate) fn new(token: Literal) -> Result<Self> {
let value = token.to_string();
// unlike `syn::LitStr`, only accepts `"..."`
if value.starts_with('"') && value.ends_with('"') {
- Ok(Self { token: token.clone(), value })
+ Ok(Self { token, value })
} else {
Err(error!(token.span(), "expected string literal"))
}