diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-01-29 21:34:59 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-01-29 21:34:59 +0100 |
commit | 9ab5cedef6de32826b9184e960b3880df3888a5a (patch) | |
tree | 56392d3be9a67f454d51d4d859a5844a0930c8ef /modules/gdscript/gdscript_parser.cpp | |
parent | 37e5a71f5da86c090850d8e30cdcc890dd903d61 (diff) | |
parent | 745f8e112fcf5d61e0fc377bdbc2539dd6b16ef9 (diff) | |
download | redot-engine-9ab5cedef6de32826b9184e960b3880df3888a5a.tar.gz |
Merge pull request #87712 from akien-mga/revert-gdscript-uid-annotations-for-now
Revert "Add UID support to GDScript files" (for now)
Diffstat (limited to 'modules/gdscript/gdscript_parser.cpp')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 2f1b3c1bfd..2839d7b123 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -93,7 +93,6 @@ bool GDScriptParser::annotation_exists(const String &p_annotation_name) const { GDScriptParser::GDScriptParser() { // Register valid annotations. if (unlikely(valid_annotations.is_empty())) { - register_annotation(MethodInfo("@uid", PropertyInfo(Variant::STRING, "uid")), AnnotationInfo::SCRIPT, &GDScriptParser::uid_annotation); register_annotation(MethodInfo("@tool"), AnnotationInfo::SCRIPT, &GDScriptParser::tool_annotation); register_annotation(MethodInfo("@icon", PropertyInfo(Variant::STRING, "icon_path")), AnnotationInfo::SCRIPT, &GDScriptParser::icon_annotation); register_annotation(MethodInfo("@static_unload"), AnnotationInfo::SCRIPT, &GDScriptParser::static_unload_annotation); @@ -521,8 +520,6 @@ void GDScriptParser::parse_program() { // `@icon` needs to be applied in the parser. See GH-72444. if (annotation->name == SNAME("@icon")) { annotation->apply(this, head, nullptr); - } else if (annotation->name == SNAME("@uid")) { - annotation->apply(this, head, nullptr); } else { head->annotations.push_back(annotation); } @@ -3837,18 +3834,18 @@ bool GDScriptParser::validate_annotation_arguments(AnnotationNode *p_annotation) } // `@icon`'s argument needs to be resolved in the parser. See GH-72444. - if (p_annotation->name == SNAME("@icon") || p_annotation->name == SNAME("@uid")) { + if (p_annotation->name == SNAME("@icon")) { ExpressionNode *argument = p_annotation->arguments[0]; if (argument->type != Node::LITERAL) { - push_error(vformat(R"(Argument 1 of annotation "%s" must be a string literal.)", p_annotation->name), argument); + push_error(R"(Argument 1 of annotation "@icon" must be a string literal.)", argument); return false; } Variant value = static_cast<LiteralNode *>(argument)->value; if (value.get_type() != Variant::STRING) { - push_error(vformat(R"(Argument 1 of annotation "%s" must be a string literal.)", p_annotation->name), argument); + push_error(R"(Argument 1 of annotation "@icon" must be a string literal.)", argument); return false; } @@ -3860,35 +3857,6 @@ bool GDScriptParser::validate_annotation_arguments(AnnotationNode *p_annotation) return true; } -bool GDScriptParser::uid_annotation(const AnnotationNode *p_annotation, Node *p_target, ClassNode *p_class) { - ERR_FAIL_COND_V_MSG(p_target->type != Node::CLASS, false, R"("@uid" annotation can only be applied to classes.)"); - ERR_FAIL_COND_V(p_annotation->resolved_arguments.is_empty(), false); - -#ifdef DEBUG_ENABLED - if (_has_uid) { - push_error(R"("@uid" annotation can only be used once.)", p_annotation); - return false; - } -#endif // DEBUG_ENABLED - - // Assign line range early to allow replacing invalid UIDs. - ClassNode *class_node = static_cast<ClassNode *>(p_target); - class_node->uid_lines = Vector2i(p_annotation->start_line - 1, p_annotation->end_line - 1); // Lines start from 1, so need to subtract. - - const String &uid_string = p_annotation->resolved_arguments[0]; -#ifdef DEBUG_ENABLED - if (ResourceUID::get_singleton()->text_to_id(uid_string) == ResourceUID::INVALID_ID) { - push_error(R"(The annotated UID is invalid.)", p_annotation); - return false; - } -#endif // DEBUG_ENABLED - - class_node->uid_string = uid_string; - - _has_uid = true; - return true; -} - bool GDScriptParser::tool_annotation(const AnnotationNode *p_annotation, Node *p_target, ClassNode *p_class) { #ifdef DEBUG_ENABLED if (_is_tool) { |