aboutsummaryrefslogtreecommitdiff
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 {