summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/tests/scripts/analyzer
diff options
context:
space:
mode:
authorrune-scape <spartacrafter@gmail.com>2024-07-23 04:46:28 -0700
committerrune-scape <spartacrafter@gmail.com>2024-07-31 12:54:16 -0700
commit6e8fa6dd50818e08fd41e467b897bc98b5f72f35 (patch)
tree6748b33d05d3daf97d672d7cee0e00ef0186715f /modules/gdscript/tests/scripts/analyzer
parent607b230ffe120b2757c56bd3d52a7a0d4e502cfe (diff)
downloadredot-engine-6e8fa6dd50818e08fd41e467b897bc98b5f72f35.tar.gz
GDScript: Fix common mismatched external parser errors
Diffstat (limited to 'modules/gdscript/tests/scripts/analyzer')
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/cyclic_ref_external.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser.gd17
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser.out3
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_base1.notest.gd1
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_base2.notest.gd2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1.notest.gd12
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1_base.notest.gd1
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1c.notest.gd1
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1d.notest.gd5
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1e.notest.gd0
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script1f.notest.gd1
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script2.notest.gd6
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/external_parser_script3.notest.gd1
13 files changed, 51 insertions, 1 deletions
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/cyclic_ref_external.out b/modules/gdscript/tests/scripts/analyzer/errors/cyclic_ref_external.out
index 64a6bd417d..878e827d04 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/cyclic_ref_external.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/cyclic_ref_external.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Could not resolve member "v".
+Could not resolve external class member "v".
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser.gd
new file mode 100644
index 0000000000..ad265a7365
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser.gd
@@ -0,0 +1,17 @@
+extends "external_parser_base1.notest.gd"
+
+const External1 = preload("external_parser_script1.notest.gd")
+
+func baz(e1: External1) -> void:
+ print(e1.e1c.bar)
+ print(e1.baz)
+
+func test_external_base_parser_type_resolve(_v: TypeFromBase):
+ pass
+
+func test():
+ var ext := External1.new()
+ print(ext.array[0].test2)
+ print(ext.get_external2().get_external3().test3)
+ # TODO: This actually produces a runtime error, but we're testing the analyzer here
+ #baz(ext)
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser.out b/modules/gdscript/tests/scripts/analyzer/features/external_parser.out
new file mode 100644
index 0000000000..26c2527fbc
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser.out
@@ -0,0 +1,3 @@
+GDTEST_OK
+test2
+test3
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_base1.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_base1.notest.gd
new file mode 100644
index 0000000000..d27d8cef3b
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_base1.notest.gd
@@ -0,0 +1 @@
+extends "external_parser_base2.notest.gd"
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_base2.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_base2.notest.gd
new file mode 100644
index 0000000000..f8de818485
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_base2.notest.gd
@@ -0,0 +1,2 @@
+class TypeFromBase:
+ pass
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1.notest.gd
new file mode 100644
index 0000000000..e1221bb138
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1.notest.gd
@@ -0,0 +1,12 @@
+extends "external_parser_script1_base.notest.gd"
+
+const External2 = preload("external_parser_script2.notest.gd")
+const External1c = preload("external_parser_script1c.notest.gd")
+
+@export var e1c: External1c
+
+var array: Array[External2] = [ External2.new() ]
+var baz: int
+
+func get_external2() -> External2:
+ return External2.new()
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1_base.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1_base.notest.gd
new file mode 100644
index 0000000000..4249efa1f9
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1_base.notest.gd
@@ -0,0 +1 @@
+extends Resource
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1c.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1c.notest.gd
new file mode 100644
index 0000000000..34a48cba6f
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1c.notest.gd
@@ -0,0 +1 @@
+extends "external_parser_script1d.notest.gd"
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1d.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1d.notest.gd
new file mode 100644
index 0000000000..43bc6f3e53
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1d.notest.gd
@@ -0,0 +1,5 @@
+extends "external_parser_script1f.notest.gd"
+
+const External1e = preload("external_parser_script1e.notest.gd")
+
+var bar: Array[External1e]
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1e.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1e.notest.gd
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1e.notest.gd
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1f.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1f.notest.gd
new file mode 100644
index 0000000000..4249efa1f9
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script1f.notest.gd
@@ -0,0 +1 @@
+extends Resource
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script2.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script2.notest.gd
new file mode 100644
index 0000000000..885f813503
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script2.notest.gd
@@ -0,0 +1,6 @@
+const External3 = preload("external_parser_script3.notest.gd")
+
+var test2 := "test2"
+
+func get_external3() -> External3:
+ return External3.new()
diff --git a/modules/gdscript/tests/scripts/analyzer/features/external_parser_script3.notest.gd b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script3.notest.gd
new file mode 100644
index 0000000000..3e62974256
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/external_parser_script3.notest.gd
@@ -0,0 +1 @@
+var test3 := "test3"