summaryrefslogtreecommitdiffstats
path: root/modules/gdscript
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-06-21 21:50:33 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-06-21 21:50:33 +0200
commit81a0199be46679213bd2a46cb75394c05eb52c30 (patch)
tree0c0e2e551e8659077d76809f08a4ef9ff421d9e3 /modules/gdscript
parent28a60b3de02e8cfcc742a248078e6b7ee8f728b1 (diff)
parent6c28b8edd3bd43c28c4c5671b4b1800e14b47949 (diff)
downloadredot-engine-81a0199be46679213bd2a46cb75394c05eb52c30.tar.gz
Merge pull request #78533 from anvilfolk/sadrevert
GDScript: fix regression when checking for virtual function implementation
Diffstat (limited to 'modules/gdscript')
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp10
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.gd2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.gd5
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.gd11
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.out1
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.gd10
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.out1
9 files changed, 0 insertions, 44 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 9d39cbf1a5..d3445b8cc0 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -3097,16 +3097,6 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
bool is_constructor = (base_type.is_meta_type || (p_call->callee && p_call->callee->type == GDScriptParser::Node::IDENTIFIER)) && p_call->function_name == SNAME("new");
if (get_function_signature(p_call, is_constructor, base_type, p_call->function_name, return_type, par_types, default_arg_count, method_flags)) {
- // If the method is implemented in the class hierarchy, the virtual flag will not be set for that MethodInfo and the search stops there.
- // MethodInfo's above the class that defines the method might still have the virtual flag set.
- if (method_flags.has_flag(METHOD_FLAG_VIRTUAL)) {
- if (p_call->is_super) {
- push_error(vformat(R"*(Cannot call the parent class' virtual function "%s()" because it hasn't been defined.)*", p_call->function_name), p_call);
- } else {
- push_error(vformat(R"*(Cannot call virtual function "%s()" because it hasn't been defined.)*", p_call->function_name), p_call);
- }
- }
-
// If the function require typed arrays we must make literals be typed.
for (const KeyValue<int, GDScriptParser::ArrayNode *> &E : arrays) {
int index = E.key;
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.gd b/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.gd
deleted file mode 100644
index c34d927035..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.gd
+++ /dev/null
@@ -1,2 +0,0 @@
-func test():
- _get_property_list()
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.out b/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.out
deleted file mode 100644
index ce2f49a5e5..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/errors/virtual_method_not_implemented.out
+++ /dev/null
@@ -1,2 +0,0 @@
-GDTEST_ANALYZER_ERROR
-Cannot call virtual function "_get_property_list()" because it hasn't been defined.
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.gd b/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.gd
deleted file mode 100644
index 57dfffdbee..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-func _init():
- super()
-
-func test():
- pass
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.out b/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.out
deleted file mode 100644
index e68759223c..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/errors/virtual_super_not_implemented.out
+++ /dev/null
@@ -1,2 +0,0 @@
-GDTEST_ANALYZER_ERROR
-Cannot call the parent class' virtual function "_init()" because it hasn't been defined.
diff --git a/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.gd b/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.gd
deleted file mode 100644
index 1aacd1d11c..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.gd
+++ /dev/null
@@ -1,11 +0,0 @@
-class TestOne:
- func _get_property_list():
- return {}
-
-class TestTwo extends TestOne:
- func _init():
- var _x = _get_property_list()
-
-func test():
- var x = TestTwo.new()
- var _x = x._get_property_list()
diff --git a/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.out b/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.out
deleted file mode 100644
index d73c5eb7cd..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/features/virtual_method_implemented.out
+++ /dev/null
@@ -1 +0,0 @@
-GDTEST_OK
diff --git a/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.gd b/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.gd
deleted file mode 100644
index c447003619..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.gd
+++ /dev/null
@@ -1,10 +0,0 @@
-class TestOne:
- func _init():
- pass
-
-class TestTwo extends TestOne:
- func _init():
- super()
-
-func test():
- pass
diff --git a/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.out b/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.out
deleted file mode 100644
index d73c5eb7cd..0000000000
--- a/modules/gdscript/tests/scripts/analyzer/features/virtual_super_implemented.out
+++ /dev/null
@@ -1 +0,0 @@
-GDTEST_OK