浏览代码

Add return type for GDScript getters

ocean (they/them) 2 年之前
父节点
当前提交
94dfac8da7

+ 1 - 1
modules/gdscript/gdscript_compiler.cpp

@@ -254,7 +254,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
 				if (codegen.script->member_indices.has(identifier)) {
 					if (codegen.script->member_indices[identifier].getter != StringName() && codegen.script->member_indices[identifier].getter != codegen.function_name) {
 						// Perform getter.
-						GDScriptCodeGenerator::Address temp = codegen.add_temporary();
+						GDScriptCodeGenerator::Address temp = codegen.add_temporary(codegen.script->member_indices[identifier].data_type);
 						Vector<GDScriptCodeGenerator::Address> args; // No argument needed.
 						gen->write_call_self(temp, codegen.script->member_indices[identifier].getter, args);
 						return temp;

+ 9 - 0
modules/gdscript/tests/scripts/analyzer/features/getter_return_type.gd

@@ -0,0 +1,9 @@
+var Value:int = 8 :
+	get:
+		return Value
+	set(v):
+		Value = v
+
+func test():
+	var f:float = Value
+	print(int(f))

+ 2 - 0
modules/gdscript/tests/scripts/analyzer/features/getter_return_type.out

@@ -0,0 +1,2 @@
+GDTEST_OK
+8