aboutsummaryrefslogtreecommitdiff
path: root/modules/gdscript/gd_parser.cpp
diff options
context:
space:
mode:
authorBojidar Marinov2016-08-27 15:56:51 +0300
committerFabio Alessandrelli2017-04-06 19:01:43 +0200
commitdad8e04139100143e4a2884c84c5c32bdff9c951 (patch)
tree410bcc5819833b2bd6531aec5d051379d9cd9897 /modules/gdscript/gd_parser.cpp
parented80f4563a944dbe67a407e7d211cc394210a0f3 (diff)
downloadgodot-dad8e04139100143e4a2884c84c5c32bdff9c951.tar.gz
godot-dad8e04139100143e4a2884c84c5c32bdff9c951.tar.zst
godot-dad8e04139100143e4a2884c84c5c32bdff9c951.zip
Diffstat (limited to 'modules/gdscript/gd_parser.cpp')
-rw-r--r--modules/gdscript/gd_parser.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index c2b262c8d..009100cb3 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -3157,8 +3157,14 @@ void GDParser::_parse_class(ClassNode *p_class) {
//mutiple constant declarations..
int last_assign = -1; // Incremented by 1 right before the assingment.
+ String enum_name;
+ Dictionary enum_dict;
tokenizer->advance();
+ if (tokenizer->get_token() == GDTokenizer::TK_IDENTIFIER) {
+ enum_name = tokenizer->get_token_identifier();
+ tokenizer->advance();
+ }
if (tokenizer->get_token() != GDTokenizer::TK_CURLY_BRACKET_OPEN) {
_set_error("Expected '{' in enum declaration");
return;
@@ -3227,10 +3233,24 @@ void GDParser::_parse_class(ClassNode *p_class) {
tokenizer->advance();
}
+ if (enum_name != "") {
+ const ConstantNode *cn = static_cast<const ConstantNode *>(constant.expression);
+ enum_dict[constant.identifier] = cn->value;
+ }
+
p_class->constant_expressions.push_back(constant);
}
}
+ if (enum_name != "") {
+ ClassNode::Constant enum_constant;
+ enum_constant.identifier = enum_name;
+ ConstantNode *cn = alloc_node<ConstantNode>();
+ cn->value = enum_dict;
+ enum_constant.expression = cn;
+ p_class->constant_expressions.push_back(enum_constant);
+ }
+
if (!_end_statement()) {
_set_error("Expected end of statement (enum)");
return;