From 2416b40bdcac6dda51cac17372fe8d6bf7c27116 Mon Sep 17 00:00:00 2001 From: paxcut Date: Wed, 18 Mar 2026 05:10:42 -0700 Subject: [PATCH] fix: improved error messages Currently, when the parser encounters an invalid keyword inside a function or a structure it gives an invalid function statement or invalid member definition error instead of stating that an invalid keyword was found. This was written as a response to the feature request of better error messages when loops are used inside structs but expands on it to include all possible invalid keywords --- lib/source/pl/core/parser.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/source/pl/core/parser.cpp b/lib/source/pl/core/parser.cpp index 54c0a40f..8ae50131 100644 --- a/lib/source/pl/core/parser.cpp +++ b/lib/source/pl/core/parser.cpp @@ -970,6 +970,9 @@ namespace pl::core { statement = parseFunctionVariableDecl(); } else if (sequence(tkn::Keyword::Const)) { statement = parseFunctionVariableDecl(true); + } else if (m_curr[0].type == Token::Type::Keyword) { + errorHere("Invalid {} found in function.", getFormattedToken(0)); + return nullptr; } else { errorHere("Invalid function statement."); next(); @@ -1930,7 +1933,10 @@ namespace pl::core { return parseTryCatchStatement([this] { return parseMember(); }); else if (oneOf(tkn::Keyword::Return, tkn::Keyword::Break, tkn::Keyword::Continue)) member = parseFunctionControlFlowStatement(); - else { + else if (m_curr[0].type == Token::Type::Keyword) { + errorHere("Invalid {} found in struct.", getFormattedToken(0)); + return nullptr; + } else { errorHere("Invalid struct member definition."); next(); return nullptr;