GDScript: Fix broken export group annotations

This commit is contained in:
Danil Alexeev 2023-01-27 16:25:15 +03:00
parent 518b9e5801
commit 1d68ce2cce
No known key found for this signature in database
GPG key ID: 124453E157DA8DC7
2 changed files with 12 additions and 4 deletions

View file

@ -840,14 +840,19 @@ void GDScriptParser::parse_class_body(bool p_is_multiline) {
case GDScriptTokenizer::Token::ANNOTATION: {
advance();
// Check for class-level annotations.
// Check for standalone and class-level annotations.
AnnotationNode *annotation = parse_annotation(AnnotationInfo::STANDALONE | AnnotationInfo::CLASS_LEVEL);
if (annotation != nullptr) {
if (annotation->applies_to(AnnotationInfo::STANDALONE)) {
if (previous.type != GDScriptTokenizer::Token::NEWLINE) {
push_error(R"(Expected newline after a standalone annotation.)");
}
head->annotations.push_back(annotation);
if (annotation->name == "@export_category" || annotation->name == "@export_group" || annotation->name == "@export_subgroup") {
current_class->add_member_group(annotation);
} else {
// For potential non-group standalone annotations.
push_error(R"(Unexpected standalone annotation in class body.)");
}
} else {
annotation_stack.push_back(annotation);
}
@ -3849,7 +3854,6 @@ bool GDScriptParser::export_group_annotations(const AnnotationNode *p_annotation
} break;
}
current_class->add_member_group(annotation);
return true;
}