From f735aa1fc28cbfbe8acb70016495cc33a5297742 Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Mon, 14 Aug 2023 11:04:53 -0500 Subject: [PATCH] C#: Include argument types in generated methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Prevents warnings over ambiguous references with Compat.cs • Fix typo in Compat.cs causing AddCodeCompletionOption documentation to inherit itself --- modules/mono/editor/bindings_generator.cpp | 26 ++++++++++++++++++- .../mono/glue/GodotSharp/GodotSharp/Compat.cs | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp index 342c94cbd90..2551d925898 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -523,7 +523,31 @@ void BindingsGenerator::_append_xml_method(StringBuilder &p_xml_output, const Ty p_xml_output.append(p_target_itype->proxy_name); p_xml_output.append("."); p_xml_output.append(target_imethod->proxy_name); - p_xml_output.append("\"/>"); + p_xml_output.append("("); + bool first_key = true; + for (const ArgumentInterface &iarg : target_imethod->arguments) { + const TypeInterface *arg_type = _get_type_or_null(iarg.type); + + if (first_key) { + first_key = false; + } else { + p_xml_output.append(", "); + } + if (!arg_type) { + ERR_PRINT("Cannot resolve argument type in documentation: '" + p_link_target + "'."); + p_xml_output.append(iarg.type.cname); + continue; + } + if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL) { + p_xml_output.append("Nullable{"); + } + String arg_cs_type = arg_type->cs_type + _get_generic_type_parameters(*arg_type, iarg.type.generic_type_parameters); + p_xml_output.append(arg_cs_type.replacen("<", "{").replacen(">", "}").replacen("params ", "")); + if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL) { + p_xml_output.append("}"); + } + } + p_xml_output.append(")\"/>"); } else { if (!p_target_itype->is_intentionally_ignored(p_link_target)) { ERR_PRINT("Cannot resolve method reference in documentation: '" + p_link_target + "'."); diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Compat.cs b/modules/mono/glue/GodotSharp/GodotSharp/Compat.cs index 41cea031ab7..48b47b166a8 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Compat.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Compat.cs @@ -26,7 +26,7 @@ partial class AnimationNode partial class CodeEdit { - /// + /// [EditorBrowsable(EditorBrowsableState.Never)] public void AddCodeCompletionOption(CodeCompletionKind type, string displayText, string insertText, Nullable textColor, Resource icon, Nullable value) {