From 0ba6048ad3c945e2bd1d0114b5095535c22103ce Mon Sep 17 00:00:00 2001 From: George Marques Date: Wed, 19 Apr 2023 11:10:35 -0300 Subject: Add support for static variables in GDScript Which allows editable data associated with a particular class instead of the instance. Scripts with static variables are kept in memory indefinitely unless the `@static_unload` annotation is used or the `static_unload()` method is called on the GDScript. If the custom function `_static_init()` exists it will be called when the class is loaded, after the static variables are set. --- .../tests/scripts/parser/errors/static_constructor_not_static.gd | 5 +++++ .../tests/scripts/parser/errors/static_constructor_not_static.out | 2 ++ .../scripts/parser/errors/static_constructor_returning_something.gd | 6 ++++++ .../parser/errors/static_constructor_returning_something.out | 2 ++ 4 files changed, 15 insertions(+) create mode 100644 modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.gd create mode 100644 modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.out create mode 100644 modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.gd create mode 100644 modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.out (limited to 'modules/gdscript/tests/scripts/parser/errors') diff --git a/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.gd b/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.gd new file mode 100644 index 0000000000..cbfa1f314f --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.gd @@ -0,0 +1,5 @@ +func _static_init(): + print("static init") + +func test(): + print("done") diff --git a/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.out b/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.out new file mode 100644 index 0000000000..b2b8711e96 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/static_constructor_not_static.out @@ -0,0 +1,2 @@ +GDTEST_PARSER_ERROR +Static constructor must be declared static. diff --git a/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.gd b/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.gd new file mode 100644 index 0000000000..711243f822 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.gd @@ -0,0 +1,6 @@ +static func _static_init(): + print("static init") + return true + +func test(): + print("done") diff --git a/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.out b/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.out new file mode 100644 index 0000000000..a034850e86 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/static_constructor_returning_something.out @@ -0,0 +1,2 @@ +GDTEST_PARSER_ERROR +Constructor cannot return a value. -- cgit v1.2.3