Ver Fonte

Merge pull request #70642 from vonagam/fix-constructor-call-type

Fixes https://github.com/godotengine/godot/issues/70605
Yuri Rubinsky há 2 anos atrás
pai
commit
a754930918

+ 1 - 1
modules/gdscript/gdscript_analyzer.cpp

@@ -4174,7 +4174,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
 				r_default_arg_count++;
 			}
 		}
-		r_return_type = found_function->get_datatype();
+		r_return_type = p_is_constructor ? p_base_type : found_function->get_datatype();
 		r_return_type.is_meta_type = false;
 		r_return_type.is_coroutine = found_function->is_coroutine;
 

+ 10 - 0
modules/gdscript/tests/scripts/analyzer/errors/constructor_call_type.gd

@@ -0,0 +1,10 @@
+class A:
+	func _init():
+		pass
+
+class B extends A: pass
+class C extends A: pass
+
+func test():
+	var x := B.new()
+	print(x is C)

+ 2 - 0
modules/gdscript/tests/scripts/analyzer/errors/constructor_call_type.out

@@ -0,0 +1,2 @@
+GDTEST_ANALYZER_ERROR
+Expression is of type "B" so it can't be of type "C".