about summary refs log tree commit diff
path: root/src/libproc_macro_plugin
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2017-02-18 12:45:32 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2017-03-03 02:05:55 +0000
commit8dca72be9be71fbccae9370b45af8efb946dedc1 (patch)
tree14206a82d643981cf64cf833166cbe173111e812 /src/libproc_macro_plugin
parent0143774cb5c21b18bf599b1726e122785c0de452 (diff)
downloadrust-8dca72be9be71fbccae9370b45af8efb946dedc1.tar.gz
rust-8dca72be9be71fbccae9370b45af8efb946dedc1.zip
Optimize `syntax::tokenstream::Cursor`.
Diffstat (limited to 'src/libproc_macro_plugin')
-rw-r--r--src/libproc_macro_plugin/qquote.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libproc_macro_plugin/qquote.rs b/src/libproc_macro_plugin/qquote.rs
index b9bf35cff07..e3d85bca3e0 100644
--- a/src/libproc_macro_plugin/qquote.rs
+++ b/src/libproc_macro_plugin/qquote.rs
@@ -17,6 +17,7 @@ use syntax::symbol::Symbol;
 use syntax::tokenstream::{self, Delimited, TokenTree, TokenStream};
 use syntax_pos::DUMMY_SP;
 
+use std::iter;
 use std::rc::Rc;
 
 pub fn qquote<'cx>(stream: TokenStream) -> TokenStream {
@@ -75,14 +76,14 @@ impl Quote for TokenStream {
             return quote!(::syntax::tokenstream::TokenStream::empty());
         }
 
-        struct Quote(tokenstream::Cursor);
+        struct Quote(iter::Peekable<tokenstream::Cursor>);
 
         impl Iterator for Quote {
             type Item = TokenStream;
 
             fn next(&mut self) -> Option<TokenStream> {
                 let is_unquote = match self.0.peek() {
-                    Some(TokenTree::Token(_, Token::Ident(ident))) if ident.name == "unquote" => {
+                    Some(&TokenTree::Token(_, Token::Ident(ident))) if ident.name == "unquote" => {
                         self.0.next();
                         true
                     }
@@ -96,7 +97,7 @@ impl Quote for TokenStream {
             }
         }
 
-        let quoted = Quote(self.trees()).collect::<TokenStream>();
+        let quoted = Quote(self.trees().peekable()).collect::<TokenStream>();
         quote!([(unquote quoted)].iter().cloned().collect::<::syntax::tokenstream::TokenStream>())
     }
 }