summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/tests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gdscript/tests')
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/object_iterators.gd49
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/object_iterators.out30
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.gd21
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.out4
4 files changed, 104 insertions, 0 deletions
diff --git a/modules/gdscript/tests/scripts/runtime/features/object_iterators.gd b/modules/gdscript/tests/scripts/runtime/features/object_iterators.gd
new file mode 100644
index 0000000000..6fe28c6f78
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/object_iterators.gd
@@ -0,0 +1,49 @@
+class MyIterator:
+ var count: int
+
+ func _init(p_count: int) -> void:
+ count = p_count
+
+ func _iter_init(arg: Array) -> bool:
+ prints("_iter_init", arg)
+ arg[0] = 0
+ return arg[0] < count
+
+ func _iter_next(arg: Array) -> bool:
+ prints("_iter_next", arg)
+ arg[0] += 1
+ return arg[0] < count
+
+ func _iter_get(arg: Variant) -> Variant:
+ prints("_iter_get", arg)
+ return arg
+
+func test():
+ var container := PackedDataContainer.new()
+ var _err := container.pack([{
+ id = 123,
+ node_path = ^"/some/path",
+ data = PackedByteArray(),
+ }])
+
+ for ref: PackedDataContainerRef in container:
+ for key: String in ref:
+ print(key)
+
+ print("===")
+
+ for ref: Variant in container:
+ for key: String in ref:
+ print(key)
+
+ print("===")
+
+ var hard_custom := MyIterator.new(3)
+ for x in hard_custom:
+ print(x)
+
+ print("===")
+
+ var weak_custom: Variant = MyIterator.new(3)
+ for x in weak_custom:
+ print(x)
diff --git a/modules/gdscript/tests/scripts/runtime/features/object_iterators.out b/modules/gdscript/tests/scripts/runtime/features/object_iterators.out
new file mode 100644
index 0000000000..942a2c9dd8
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/object_iterators.out
@@ -0,0 +1,30 @@
+GDTEST_OK
+id
+node_path
+data
+===
+id
+node_path
+data
+===
+_iter_init [<null>]
+_iter_get 0
+0
+_iter_next [0]
+_iter_get 1
+1
+_iter_next [1]
+_iter_get 2
+2
+_iter_next [2]
+===
+_iter_init [<null>]
+_iter_get 0
+0
+_iter_next [0]
+_iter_get 1
+1
+_iter_next [1]
+_iter_get 2
+2
+_iter_next [2]
diff --git a/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.gd b/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.gd
new file mode 100644
index 0000000000..ef2d9a1d60
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.gd
@@ -0,0 +1,21 @@
+# GH-89958
+
+func test():
+ if true:
+ @warning_ignore("unused_variable")
+ var a = 1
+ @warning_ignore("unused_variable")
+ var b := 1
+ @warning_ignore("unused_variable")
+ var c := 1
+
+ if true:
+ var a
+ @warning_ignore("unassigned_variable")
+ print(a)
+ var b
+ @warning_ignore("unassigned_variable")
+ print(b)
+ var c: Object
+ @warning_ignore("unassigned_variable")
+ print(c)
diff --git a/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.out b/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.out
new file mode 100644
index 0000000000..279ea2d3b1
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/reset_uninit_local_vars.out
@@ -0,0 +1,4 @@
+GDTEST_OK
+<null>
+<null>
+<null>