diff options
author | Yuri Sizov <yuris@humnom.net> | 2022-07-03 22:30:08 +0300 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2022-07-05 22:01:40 +0300 |
commit | f85bafaa11b60617bb049ce5834be70479377426 (patch) | |
tree | 7577e16c593096a6b34034424ae108134b39ed6a /modules/gdscript/gdscript_compiler.cpp | |
parent | b4644e283556b499a22dada2db5cff12290440ca (diff) | |
download | redot-engine-f85bafaa11b60617bb049ce5834be70479377426.tar.gz |
Add grouping annotations for class properties in GDScript
Diffstat (limited to 'modules/gdscript/gdscript_compiler.cpp')
-rw-r--r-- | modules/gdscript/gdscript_compiler.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index 6055d3df33..af8e4b3746 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -2452,6 +2452,25 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, const GDScriptPar } #endif } break; + + case GDScriptParser::ClassNode::Member::GROUP: { + const GDScriptParser::AnnotationNode *annotation = member.annotation; + StringName name = annotation->export_info.name; + + // This is not a normal member, but we need this to keep indices in order. + GDScript::MemberInfo minfo; + minfo.index = p_script->member_indices.size(); + + PropertyInfo prop_info; + prop_info.name = name; + prop_info.usage = annotation->export_info.usage; + prop_info.hint_string = annotation->export_info.hint_string; + + p_script->member_info[name] = prop_info; + p_script->member_indices[name] = minfo; + p_script->members.insert(name); + } break; + default: break; // Nothing to do here. } |