Browse Source

Generate `arghint` for script types

HolonProduction 1 year ago
parent
commit
402bdfa3b7
1 changed files with 14 additions and 0 deletions
  1. 14 0
      modules/gdscript/gdscript_editor.cpp

+ 14 - 0
modules/gdscript/gdscript_editor.cpp

@@ -2768,6 +2768,20 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
 
 
 				base_type = base_type.class_type->base_type;
 				base_type = base_type.class_type->base_type;
 			} break;
 			} break;
+			case GDScriptParser::DataType::SCRIPT: {
+				if (base_type.script_type->is_valid() && base_type.script_type->has_method(p_method)) {
+					r_arghint = _make_arguments_hint(base_type.script_type->get_method_info(p_method), p_argidx);
+					return;
+				}
+				Ref<Script> base_script = base_type.script_type->get_base_script();
+				if (base_script.is_valid()) {
+					base_type.script_type = base_script;
+				} else {
+					base_type.kind = GDScriptParser::DataType::NATIVE;
+					base_type.builtin_type = Variant::OBJECT;
+					base_type.native_type = base_type.script_type->get_instance_base_type();
+				}
+			} break;
 			case GDScriptParser::DataType::NATIVE: {
 			case GDScriptParser::DataType::NATIVE: {
 				StringName class_name = base_type.native_type;
 				StringName class_name = base_type.native_type;
 				if (!ClassDB::class_exists(class_name)) {
 				if (!ClassDB::class_exists(class_name)) {