summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDualMatrix <piet.goris@gmail.com>2019-02-01 17:09:41 +0100
committerDualMatrix <piet.goris@gmail.com>2019-02-01 21:18:14 +0100
commitff508dfede772ce9c08803faeb96d649fa9c0341 (patch)
tree367089aca3c25f7c64ec5bd0d95b5d0c4eab4a4d
parent70689ebffd95ab34e45bcbfdce3f6389033bfd44 (diff)
Fixed Null appearing inside export variables with type hints and no default value
The default value of the type is now used to initialise it. export(int) A Will now have A be 0 istead of Null even though it still showed as 0 before in the inspector, fixes #25357
-rw-r--r--modules/gdscript/gdscript_parser.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index af189fdb7e..0eae734d93 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -4720,6 +4720,25 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
_set_error("Type-less export needs a constant expression assigned to infer type.");
return;
}
+
+ if (member._export.type != Variant::NIL) {
+ IdentifierNode *id = alloc_node<IdentifierNode>();
+ id->name = member.identifier;
+
+ ConstantNode *cn = alloc_node<ConstantNode>();
+
+ Variant::CallError ce;
+ cn->value = Variant::construct(member._export.type, NULL, 0, ce);
+
+ OperatorNode *op = alloc_node<OperatorNode>();
+ op->op = OperatorNode::OP_INIT_ASSIGN;
+ op->arguments.push_back(id);
+ op->arguments.push_back(cn);
+
+ p_class->initializer->statements.push_back(op);
+
+ member.initial_assignment = op;
+ }
}
if (autoexport && member.data_type.has_type) {