GDScript: Fix override signature check of script inheritance

Avoid treating the super class as a meta type for signature check, since
it is looking at the instance level for that.
This commit is contained in:
George Marques 2023-02-21 14:37:08 -03:00
parent 7e79aead99
commit 1731010774
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
3 changed files with 13 additions and 0 deletions

View file

@ -1534,6 +1534,7 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
// Check if the function signature matches the parent. If not it's an error since it breaks polymorphism. // Check if the function signature matches the parent. If not it's an error since it breaks polymorphism.
// Not for the constructor which can vary in signature. // Not for the constructor which can vary in signature.
GDScriptParser::DataType base_type = parser->current_class->base_type; GDScriptParser::DataType base_type = parser->current_class->base_type;
base_type.is_meta_type = false;
GDScriptParser::DataType parent_return_type; GDScriptParser::DataType parent_return_type;
List<GDScriptParser::DataType> parameters_types; List<GDScriptParser::DataType> parameters_types;
int default_par_count = 0; int default_par_count = 0;

View file

@ -0,0 +1,10 @@
func test():
print("ok")
# https://github.com/godotengine/godot/issues/71994
class A:
extends RefCounted
class B:
extends A
func duplicate():
pass