From 1e7ecaf801961caabec813fc8b624f0b7a61c679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Grodzi=C5=84ski?= Date: Sat, 5 Jul 2025 20:29:29 +0900 Subject: [PATCH] Handle empty call --- src/Parser/Parser.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 402f882..521ff88 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -501,19 +501,21 @@ shared_ptr Parser::matchExpressionCall() { currentIndex++; // left parenthesis vector> argumentExpressions; - do { - tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line - - shared_ptr argumentExpression = nextExpression(); - if (argumentExpression == nullptr) - return nullptr; - argumentExpressions.push_back(argumentExpression); - } while (tryMatchingTokenKinds({TokenKind::COMMA}, true, true)); - - tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line if (!tryMatchingTokenKinds({TokenKind::RIGHT_PAREN}, true, true)) { - markError(TokenKind::RIGHT_PAREN, {}); - return nullptr; + do { + tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line + + shared_ptr argumentExpression = nextExpression(); + if (argumentExpression == nullptr) + return nullptr; + argumentExpressions.push_back(argumentExpression); + } while (tryMatchingTokenKinds({TokenKind::COMMA}, true, true)); + + tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line + if (!tryMatchingTokenKinds({TokenKind::RIGHT_PAREN}, true, true)) { + markError(TokenKind::RIGHT_PAREN, {}); + return nullptr; + } } return make_shared(identifierToken->getLexme(), argumentExpressions);