From b0b1eaeb6de20bd364a471132cd2e29a21b5e738 Mon Sep 17 00:00:00 2001 From: Dmitrii Maganov Date: Thu, 23 Feb 2023 04:13:09 +0200 Subject: GDScript: Fix parsing unexpected break/continue in lambda --- .../tests/scripts/parser/errors/bad_continue_in_lambda.gd | 5 +++++ .../tests/scripts/parser/errors/bad_continue_in_lambda.out | 2 ++ .../scripts/parser/features/good_continue_in_lambda.gd | 13 +++++++++++++ .../scripts/parser/features/good_continue_in_lambda.out | 2 ++ 4 files changed, 22 insertions(+) create mode 100644 modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.gd create mode 100644 modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.out create mode 100644 modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.gd create mode 100644 modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.out (limited to 'modules/gdscript/tests') diff --git a/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.gd b/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.gd new file mode 100644 index 0000000000..319c1801c0 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.gd @@ -0,0 +1,5 @@ +func test(): + for index in range(0, 1): + var lambda := func(): + continue + print('not ok') diff --git a/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.out b/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.out new file mode 100644 index 0000000000..262dfbc09b --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/bad_continue_in_lambda.out @@ -0,0 +1,2 @@ +GDTEST_PARSER_ERROR +Cannot use "continue" outside of a loop. diff --git a/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.gd b/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.gd new file mode 100644 index 0000000000..2fa45c1d7d --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.gd @@ -0,0 +1,13 @@ +func test(): + var i_string := '' + for i in 3: + if i == 1: continue + var lambda := func(): + var j_string := '' + for j in 3: + if j == 1: continue + j_string += str(j) + return j_string + i_string += lambda.call() + assert(i_string == '0202') + print('ok') diff --git a/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.out b/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.out new file mode 100644 index 0000000000..1b47ed10dc --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/good_continue_in_lambda.out @@ -0,0 +1,2 @@ +GDTEST_OK +ok -- cgit v1.2.3