From 886732ac2b131de555494f292cbb7c5058b40cd9 Mon Sep 17 00:00:00 2001 From: George Marques Date: Mon, 1 Jun 2020 16:41:05 -0300 Subject: Add support for properties --- modules/gdscript/gdscript_parser.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'modules/gdscript/gdscript_parser.h') diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h index 09cb17f010..0d775915cf 100644 --- a/modules/gdscript/gdscript_parser.h +++ b/modules/gdscript/gdscript_parser.h @@ -777,10 +777,28 @@ public: }; struct VariableNode : public Node { + enum PropertyStyle { + PROP_NONE, + PROP_INLINE, + PROP_SETGET, + }; + IdentifierNode *identifier = nullptr; ExpressionNode *initializer = nullptr; TypeNode *datatype_specifier = nullptr; bool infer_datatype = false; + + PropertyStyle property = PROP_NONE; + union { + SuiteNode *setter = nullptr; + IdentifierNode *setter_pointer; + }; + IdentifierNode *setter_parameter = nullptr; + union { + SuiteNode *getter = nullptr; + IdentifierNode *getter_pointer; + }; + bool exported = false; bool onready = false; PropertyInfo export_info; @@ -923,6 +941,10 @@ private: // Statements. Node *parse_statement(); VariableNode *parse_variable(); + VariableNode *parse_variable(bool p_allow_property); + VariableNode *parse_property(VariableNode *p_variable, bool p_need_indent); + void parse_property_getter(VariableNode *p_variable); + void parse_property_setter(VariableNode *p_variable); ConstantNode *parse_constant(); AssertNode *parse_assert(); BreakNode *parse_break(); -- cgit v1.2.3