From e4d5393ecf85e65809c124aa5a66571e0aa18168 Mon Sep 17 00:00:00 2001 From: Thakee Nathees Date: Sun, 13 Sep 2020 19:36:20 +0530 Subject: GDScript export array/dictionary type infer bug fix Fix : #41980 --- modules/gdscript/gdscript_parser.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index e8dea8180a..d4cd64efe3 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -2884,11 +2884,16 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node push_error(R"(Cannot use "@export" annotation with variable without type or initializer, since type can't be inferred.)", p_annotation); return false; } - if (variable->initializer->type != Node::LITERAL) { + if (variable->initializer->type == Node::LITERAL) { + variable->export_info.type = static_cast(variable->initializer)->value.get_type(); + } else if (variable->initializer->type == Node::ARRAY) { + variable->export_info.type = Variant::ARRAY; + } else if (variable->initializer->type == Node::DICTIONARY) { + variable->export_info.type = Variant::DICTIONARY; + } else { push_error(R"(To use "@export" annotation with type-less variable, the default value must be a literal.)", p_annotation); return false; } - variable->export_info.type = static_cast(variable->initializer)->value.get_type(); } // else: Actual type will be set by the analyzer, which can infer the proper type. } -- cgit v1.2.3