diff options
| author | Bojidar Marinov | 2016-10-26 14:38:41 +0300 |
|---|---|---|
| committer | Bojidar Marinov | 2016-10-26 14:38:41 +0300 |
| commit | 713f1451b95c7dd29079496186fb157ac0a11b40 (patch) | |
| tree | bef80466b512c818959dc5426e64756974f16f4f /modules/gdscript/gd_parser.cpp | |
| parent | 24337f9c5ef8668153b2611fd98fd7a3de5119c5 (diff) | |
| download | godot-713f1451b95c7dd29079496186fb157ac0a11b40.tar.gz godot-713f1451b95c7dd29079496186fb157ac0a11b40.tar.zst godot-713f1451b95c7dd29079496186fb157ac0a11b40.zip | |
Diffstat (limited to 'modules/gdscript/gd_parser.cpp')
| -rw-r--r-- | modules/gdscript/gd_parser.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 434f91835..09c47770a 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -2554,10 +2554,34 @@ void GDParser::_parse_class(ClassNode *p_class) { current_export.type=type; current_export.usage|=PROPERTY_USAGE_SCRIPT_VARIABLE; tokenizer->advance(); + + String hint_prefix =""; + + if(type == Variant::ARRAY && tokenizer->get_token()==GDTokenizer::TK_COMMA) { + tokenizer->advance(); + + while(tokenizer->get_token()==GDTokenizer::TK_BUILT_IN_TYPE) { + type = tokenizer->get_token_type(); + + tokenizer->advance(); + + if(type == Variant::ARRAY) { + hint_prefix += itos(Variant::ARRAY)+":"; + if (tokenizer->get_token()==GDTokenizer::TK_COMMA) { + tokenizer->advance(); + } + } else { + hint_prefix += itos(type); + break; + } + } + } + if (tokenizer->get_token()==GDTokenizer::TK_COMMA) { // hint expected next! tokenizer->advance(); - switch(current_export.type) { + + switch(type) { case Variant::INT: { @@ -2913,7 +2937,14 @@ void GDParser::_parse_class(ClassNode *p_class) { return; } break; } - + + } + if(current_export.type == Variant::ARRAY && !hint_prefix.empty()) { + if(current_export.hint) { + hint_prefix += "/"+itos(current_export.hint); + } + current_export.hint_string=hint_prefix+":"+current_export.hint_string; + current_export.hint=PROPERTY_HINT_NONE; } } else if (tokenizer->get_token()==GDTokenizer::TK_IDENTIFIER) { |
