about summary refs log tree commit diff
path: root/src/parse
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/parser.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/parse/parser.rs b/src/parse/parser.rs
index 5a09a8f..ee83293 100644
--- a/src/parse/parser.rs
+++ b/src/parse/parser.rs
@@ -217,10 +217,10 @@ impl<T: Iterator<Item = Token>> Parser<T> {
 
         while let Some(token) = consume_if!(self, GroupOpen | ArrayOpen | Dot) {
             match token.variant {
-                GroupOpen => loop {
+                GroupOpen => {
                     let mut arguments = Vec::new();
 
-                    loop {
+                    while consume_if!(self, GroupClose).is_none() {
                         arguments.push(self.expression()?);
 
                         if consume_if!(self, Comma).is_none() {
@@ -232,8 +232,8 @@ impl<T: Iterator<Item = Token>> Parser<T> {
                     left = Expression::Call(Box::new(CallNode {
                         called: left,
                         arguments,
-                    }))
-                },
+                    }));
+                }
                 ArrayOpen => {
                     let index = self.expression()?;
                     consume!(self, ArrayClose)?;
@@ -335,10 +335,9 @@ impl<T: Iterator<Item = Token>> Parser<T> {
 
     fn function(&mut self) -> Result<FnNode> {
         consume!(self, KeywordFn)?;
-        let token = self.tokens.next().expect("Expected function header.");
 
         let header = {
-            let has_self_receiver = if let KeywordSelf = token.variant {
+            let has_self_receiver = if consume_if!(self, KeywordSelf).is_some() {
                 consume_if!(self, Comma);
                 true
             } else {