Merge pull request #69423 from KoBeWi/parenture

Improve parent signature error
This commit is contained in:
Rémi Verschelde 2022-12-01 18:10:31 +01:00
commit 4821de146e
No known key found for this signature in database
GPG Key ID: C3336907360768E1
6 changed files with 15 additions and 11 deletions

View File

@ -1216,11 +1216,7 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
if (!valid) {
// Compute parent signature as a string to show in the error message.
String parent_signature = parent_return_type.is_hard_type() ? parent_return_type.to_string() : "Variant";
if (parent_signature == "null") {
parent_signature = "void";
}
parent_signature += " " + p_function->identifier->name.operator String() + "(";
String parent_signature = p_function->identifier->name.operator String() + "(";
int j = 0;
for (const GDScriptParser::DataType &par_type : parameters_types) {
if (j > 0) {
@ -1237,7 +1233,15 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
j++;
}
parent_signature += ")";
parent_signature += ") -> ";
const String return_type = parent_return_type.is_hard_type() ? parent_return_type.to_string() : "Variant";
if (return_type == "null") {
parent_signature += "void";
} else {
parent_signature += return_type;
}
push_error(vformat(R"(The function signature doesn't match the parent. Parent signature is "%s".)", parent_signature), p_function);
}
}

View File

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
The function signature doesn't match the parent. Parent signature is "int my_function(int)".
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".

View File

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
The function signature doesn't match the parent. Parent signature is "int my_function(int)".
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".

View File

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
The function signature doesn't match the parent. Parent signature is "int my_function(int = default)".
The function signature doesn't match the parent. Parent signature is "my_function(int = default) -> int".

View File

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
The function signature doesn't match the parent. Parent signature is "int my_function(int)".
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".

View File

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
The function signature doesn't match the parent. Parent signature is "int my_function()".
The function signature doesn't match the parent. Parent signature is "my_function() -> int".