浏览代码

Merge pull request #41516 from Lunatoid/allow-object-new

Fixed ParseError when calling Object.new()
Rémi Verschelde 5 年之前
父节点
当前提交
bd13e82080
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      modules/gdscript/gdscript_analyzer.cpp

+ 5 - 3
modules/gdscript/gdscript_analyzer.cpp

@@ -2279,10 +2279,12 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
 	StringName name = p_identifier->name;
 	p_identifier->source = GDScriptParser::IdentifierNode::UNDEFINED_SOURCE;
 
-	// Check globals.
-	if (GDScriptParser::get_builtin_type(name) < Variant::VARIANT_MAX) {
+	// Check globals. We make an exception for Variant::OBJECT because it's the base class for
+	// non-builtin types so we allow doing e.g. Object.new()
+	Variant::Type builtin_type = GDScriptParser::get_builtin_type(name);
+	if (builtin_type != Variant::OBJECT && builtin_type < Variant::VARIANT_MAX) {
 		if (can_be_builtin) {
-			p_identifier->set_datatype(make_builtin_meta_type(GDScriptParser::get_builtin_type(name)));
+			p_identifier->set_datatype(make_builtin_meta_type(builtin_type));
 			return;
 		} else {
 			push_error(R"(Builtin type cannot be used as a name on its own.)", p_identifier);