From 281c8c75d321570c0f47e68171260cadf8c5a817 Mon Sep 17 00:00:00 2001 From: Dmitrii Maganov Date: Sat, 25 Feb 2023 10:53:36 +0200 Subject: [PATCH] GDScript: Fix conversions from native members accessed by identifier --- modules/gdscript/gdscript_compiler.cpp | 2 +- .../features/conversions_from_native_members.gd | 11 +++++++++++ .../features/conversions_from_native_members.out | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.gd create mode 100644 modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.out diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index fad2bf334b4a..09c8954e6402 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -242,7 +242,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code // Try class members. if (_is_class_member_property(codegen, identifier)) { // Get property. - GDScriptCodeGenerator::Address temp = codegen.add_temporary(); // TODO: Could get the type of the class member here. + GDScriptCodeGenerator::Address temp = codegen.add_temporary(_gdtype_from_datatype(p_expression->get_datatype(), codegen.script)); gen->write_get_member(temp, identifier); return temp; } diff --git a/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.gd b/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.gd new file mode 100644 index 000000000000..a778fb1a946b --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.gd @@ -0,0 +1,11 @@ +class Foo extends Node: + func _init(): + name = 'f' + var string: String = name + assert(typeof(string) == TYPE_STRING) + assert(string == 'f') + print('ok') + +func test(): + var foo := Foo.new() + foo.free() diff --git a/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.out b/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.out new file mode 100644 index 000000000000..1b47ed10dc06 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/conversions_from_native_members.out @@ -0,0 +1,2 @@ +GDTEST_OK +ok