diff options
author | Dmitrii Maganov <vonagam@gmail.com> | 2023-02-23 04:13:09 +0200 |
---|---|---|
committer | Dmitrii Maganov <vonagam@gmail.com> | 2023-02-23 10:49:06 +0200 |
commit | b0b1eaeb6de20bd364a471132cd2e29a21b5e738 (patch) | |
tree | 70e3841aae56d05cf9f9bde7ffce3f39a4196723 /modules/gdscript/gdscript_parser.cpp | |
parent | 19c9fd6926b958016d562e3b2e93b0e9480300f5 (diff) | |
download | redot-engine-b0b1eaeb6de20bd364a471132cd2e29a21b5e738.tar.gz |
GDScript: Fix parsing unexpected break/continue in lambda
Diffstat (limited to 'modules/gdscript/gdscript_parser.cpp')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index b32313dad4..c402b63f7b 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -3138,6 +3138,14 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_lambda(ExpressionNode *p_p bool previous_in_lambda = in_lambda; in_lambda = true; + // Save break/continue state. + bool could_break = can_break; + bool could_continue = can_continue; + + // Disallow break/continue. + can_break = false; + can_continue = false; + function->body = parse_suite("lambda declaration", body, true); complete_extents(function); complete_extents(lambda); @@ -3155,6 +3163,11 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_lambda(ExpressionNode *p_p current_function = previous_function; in_lambda = previous_in_lambda; lambda->function = function; + + // Reset break/continue state. + can_break = could_break; + can_continue = could_continue; + return lambda; } |