diff options
Diffstat (limited to 'src/compiler.rs')
| -rw-r--r-- | src/compiler.rs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/compiler.rs b/src/compiler.rs index 7f0d32d..1d41c32 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -600,6 +600,9 @@ impl Compiler { } } } + if self.panic { + break; + } } add_op(self, block, Op::Call(arity)); @@ -718,18 +721,17 @@ impl Compiler { break; } } - Token::LeftParen => { - self.call(block); + _ => { + if !parse_branch!(self, block, self.call(block)) { + break + } } - _ => { break } } } } else if let Some(blob) = self.find_blob(&name) { let string = self.add_constant(Value::Blob(blob)); add_op(self, block, Op::Constant(string)); - if self.peek() == Token::LeftParen { - self.call(block); - } + parse_branch!(self, block, self.call(block)); } else if let Some(slot) = self.find_extern_function(&name) { let string = self.add_constant(Value::ExternFunction(slot)); add_op(self, block, Op::Constant(string)); @@ -1059,15 +1061,14 @@ impl Compiler { add_op(self, block, Op::Set(field)); return; } - Token::LeftParen => { - self.call(block); - } Token::Newline => { return; } _ => { - error!(self, "Unexpected token when parsing blob-field."); - return; + if !parse_branch!(self, block, self.call(block)) { + error!(self, "Unexpected token when parsing blob-field."); + return; + } } } } |
