From 081fa324fd11e5602b748bf45717d32692a3e7dc Mon Sep 17 00:00:00 2001 From: emre0altan Date: Tue, 6 Feb 2024 13:25:00 +0000 Subject: [PATCH] set has_type false if it is BUILTIN but Variant::NIL --- modules/gdscript/gdscript_byte_codegen.cpp | 2 +- .../tests/scripts/runtime/features/match_test_null.gd | 6 ++++++ .../tests/scripts/runtime/features/match_test_null.out | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 modules/gdscript/tests/scripts/runtime/features/match_test_null.gd create mode 100644 modules/gdscript/tests/scripts/runtime/features/match_test_null.out diff --git a/modules/gdscript/gdscript_byte_codegen.cpp b/modules/gdscript/gdscript_byte_codegen.cpp index 27766115d5a0..36b157521d55 100644 --- a/modules/gdscript/gdscript_byte_codegen.cpp +++ b/modules/gdscript/gdscript_byte_codegen.cpp @@ -429,7 +429,7 @@ void GDScriptByteCodeGenerator::set_initial_line(int p_line) { (m_var.type.has_type && m_var.type.kind == GDScriptDataType::BUILTIN) #define IS_BUILTIN_TYPE(m_var, m_type) \ - (m_var.type.has_type && m_var.type.kind == GDScriptDataType::BUILTIN && m_var.type.builtin_type == m_type) + (m_var.type.has_type && m_var.type.kind == GDScriptDataType::BUILTIN && m_var.type.builtin_type == m_type && m_type != Variant::NIL) void GDScriptByteCodeGenerator::write_type_adjust(const Address &p_target, Variant::Type p_new_type) { switch (p_new_type) { diff --git a/modules/gdscript/tests/scripts/runtime/features/match_test_null.gd b/modules/gdscript/tests/scripts/runtime/features/match_test_null.gd new file mode 100644 index 000000000000..9bb57b68eec1 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/match_test_null.gd @@ -0,0 +1,6 @@ +func test(): + match null: + null: + print('null matched') + _: + pass diff --git a/modules/gdscript/tests/scripts/runtime/features/match_test_null.out b/modules/gdscript/tests/scripts/runtime/features/match_test_null.out new file mode 100644 index 000000000000..7640cf42abfd --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/match_test_null.out @@ -0,0 +1,2 @@ +GDTEST_OK +null matched