diff options
| author | Bojidar Marinov | 2016-08-27 15:56:51 +0300 |
|---|---|---|
| committer | Fabio Alessandrelli | 2017-04-06 19:01:43 +0200 |
| commit | dad8e04139100143e4a2884c84c5c32bdff9c951 (patch) | |
| tree | 410bcc5819833b2bd6531aec5d051379d9cd9897 /modules/gdscript/gd_parser.cpp | |
| parent | ed80f4563a944dbe67a407e7d211cc394210a0f3 (diff) | |
| download | godot-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.cpp | 20 |
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; |
