diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-16 13:35:06 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-16 13:35:06 +0200 |
| commit | f7daa0fb2f916e4385dad857478d1597e28c801d (patch) | |
| tree | 835c737cfa5f2dbb5fabb1406bcf86eccc8aa640 /modules/gdscript/tests/scripts/runtime | |
| parent | 08c5ce1d9cac88b580c26b30b941e7ee5c0c1f87 (diff) | |
| parent | bb7752059966b38f75714914474da1b9f93dc294 (diff) | |
| download | redot-engine-f7daa0fb2f916e4385dad857478d1597e28c801d.tar.gz | |
Merge pull request #96856 from RandomShaper/selfdestruct_correctness
Object: Let debug lock handle callee destruction within call chain gracefully
Diffstat (limited to 'modules/gdscript/tests/scripts/runtime')
| -rw-r--r-- | modules/gdscript/tests/scripts/runtime/features/self_destruction.gd | 50 | ||||
| -rw-r--r-- | modules/gdscript/tests/scripts/runtime/features/self_destruction.out | 5 |
2 files changed, 55 insertions, 0 deletions
diff --git a/modules/gdscript/tests/scripts/runtime/features/self_destruction.gd b/modules/gdscript/tests/scripts/runtime/features/self_destruction.gd new file mode 100644 index 0000000000..442335faeb --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/self_destruction.gd @@ -0,0 +1,50 @@ +# https://github.com/godotengine/godot/issues/75658 + +class MyObj: + var callable: Callable + + func run(): + callable.call() + + var prop: + set(value): + callable.call() + get: + callable.call() + return 0 + + func _on_some_signal(): + callable.call() + + func _init(p_callable: Callable): + self.callable = p_callable + +signal some_signal + +var obj: MyObj + +func test(): + # Call. + obj = MyObj.new(nullify_obj) + obj.run() + print(obj) + + # Get. + obj = MyObj.new(nullify_obj) + var _aux = obj.prop + print(obj) + + # Set. + obj = MyObj.new(nullify_obj) + obj.prop = 1 + print(obj) + + # Signal handling. + obj = MyObj.new(nullify_obj) + @warning_ignore("return_value_discarded") + some_signal.connect(obj._on_some_signal) + some_signal.emit() + print(obj) + +func nullify_obj(): + obj = null diff --git a/modules/gdscript/tests/scripts/runtime/features/self_destruction.out b/modules/gdscript/tests/scripts/runtime/features/self_destruction.out new file mode 100644 index 0000000000..ee4024a524 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/self_destruction.out @@ -0,0 +1,5 @@ +GDTEST_OK +<null> +<null> +<null> +<null> |
