Bläddra i källkod

Merge pull request #53715 from vnen/gdscript-setter-parameter-type

Rémi Verschelde 3 år sedan
förälder
incheckning
cb85ef6c38

+ 3 - 1
modules/gdscript/gdscript_analyzer.cpp

@@ -893,11 +893,13 @@ void GDScriptAnalyzer::resolve_class_body(GDScriptParser::ClassNode *p_class) {
 					resolve_function_body(member.variable->getter);
 				}
 				if (member.variable->setter != nullptr) {
+					resolve_function_signature(member.variable->setter);
+
 					if (member.variable->setter->parameters.size() > 0) {
 						member.variable->setter->parameters[0]->datatype_specifier = member.variable->datatype_specifier;
+						member.variable->setter->parameters[0]->set_datatype(member.get_datatype());
 					}
 
-					resolve_function_signature(member.variable->setter);
 					resolve_function_body(member.variable->setter);
 				}
 			}

+ 8 - 0
modules/gdscript/tests/scripts/analyzer/errors/setter_parameter_uses_property_type.gd

@@ -0,0 +1,8 @@
+var with_setter := 0:
+	set(val):
+		var x: String = val
+		with_setter = val
+
+func test():
+	with_setter = 1
+	print(with_setter)

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

@@ -0,0 +1,2 @@
+GDTEST_ANALYZER_ERROR
+Value of type "int" cannot be assigned to a variable of type "String".