浏览代码

Merge pull request #39260 from vnen/get_script_is_type

Allow get_script() to be considered a type
Rémi Verschelde 5 年之前
父节点
当前提交
a29318a5bc
共有 1 个文件被更改,包括 9 次插入0 次删除
  1. 9 0
      modules/gdscript/gdscript_parser.cpp

+ 9 - 0
modules/gdscript/gdscript_parser.cpp

@@ -7253,6 +7253,7 @@ GDScriptParser::DataType GDScriptParser::_reduce_function_call_type(const Operat
 
 			DataType original_type = base_type;
 			bool is_initializer = callee_name == "new";
+			bool is_get_script = p_call->arguments[0]->type == Node::TYPE_SELF && callee_name == "get_script";
 			bool is_static = false;
 			bool valid = false;
 
@@ -7271,6 +7272,14 @@ GDScriptParser::DataType GDScriptParser::_reduce_function_call_type(const Operat
 				valid = true; // There's always an initializer, we can assume this is true
 			}
 
+			if (is_get_script) {
+				// get_script() can be considered a meta-type.
+				return_type.kind = DataType::CLASS;
+				return_type.class_type = static_cast<ClassNode *>(head);
+				return_type.is_meta_type = true;
+				valid = true;
+			}
+
 			if (!valid) {
 				base_type = original_type;
 				return_type = DataType();