Explorar el Código

Do not make a function that returns Variant::NIL a void function. Fix #22791.

J08nY hace 6 años
padre
commit
6e8f0cfdc6
Se han modificado 1 ficheros con 7 adiciones y 1 borrados
  1. 7 1
      modules/gdscript/gdscript_parser.cpp

+ 7 - 1
modules/gdscript/gdscript_parser.cpp

@@ -6709,9 +6709,15 @@ GDScriptParser::DataType GDScriptParser::_reduce_function_call_type(const Operat
 					}
 				}
 
+				bool rets = false;
 				return_type.has_type = true;
 				return_type.kind = DataType::BUILTIN;
-				return_type.builtin_type = Variant::get_method_return_type(base_type.builtin_type, callee_name);
+				return_type.builtin_type = Variant::get_method_return_type(base_type.builtin_type, callee_name, &rets);
+				// If the method returns, but it might return any type, (Variant::NIL), pretend we don't know the type.
+				// At least make sure we know that it returns
+				if (rets && return_type.builtin_type == Variant::NIL) {
+					return_type.has_type = false;
+				}
 				break;
 			}