|
@@ -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;
|