diff options
author | George Marques <george@gmarqu.es> | 2020-08-17 21:30:39 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2020-08-17 21:30:39 -0300 |
commit | 3abb3c0d6e9e81d3ed171162cc5ce2bbe58296e0 (patch) | |
tree | 38b0b7221a0f656447ab4bd0b31aeb5a83a9eadf /modules/gdscript/gdscript_parser.cpp | |
parent | fda6f3b600e124d9fefa3886d2feba1ce32db99f (diff) | |
download | redot-engine-3abb3c0d6e9e81d3ed171162cc5ce2bbe58296e0.tar.gz |
GDScript: Fix crash when superclass file is non-existent
Incidentally, allow EOF to be an end of statement.
Diffstat (limited to 'modules/gdscript/gdscript_parser.cpp')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index d1ba8cd84d..c9868cd80b 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -466,17 +466,17 @@ void GDScriptParser::pop_multiline() { } bool GDScriptParser::is_statement_end() { - return check(GDScriptTokenizer::Token::NEWLINE) || check(GDScriptTokenizer::Token::SEMICOLON); + return check(GDScriptTokenizer::Token::NEWLINE) || check(GDScriptTokenizer::Token::SEMICOLON) || check(GDScriptTokenizer::Token::TK_EOF); } void GDScriptParser::end_statement(const String &p_context) { bool found = false; - while (is_statement_end()) { + while (is_statement_end() && !is_at_end()) { // Remove sequential newlines/semicolons. found = true; advance(); } - if (!found) { + if (!found && !is_at_end()) { push_error(vformat(R"(Expected end of statement after %s, found "%s" instead.)", p_context, current.get_name())); } } |