### Godot version

v4.0.beta11.official [91713ced8]

### System information

macOS 13.1

### Issue description

When using a function with a return type of `void` as the return value of another function with a return type of `void`, the following error occurs: 
> Cannot get return value of call to "foo()" because it returns "void"

This wasn't a problem in Godot 3.x and Godot 4.x until now. Seems it's related to https://github.com/godotengine/godot/pull/70702. 

I understand why this is happening, but I'd expect to be able to use functions like this that return `void` because they both use the matching return type. It seems overly strict.

In a real world example I use this to return early when switching states in a FSM:

```gdscript
func _process(_delta: float) -> void:
  if player.is_grounded():
    return state_machine.transition_to("ground") # returns void

  if player.is_on_wall():
    return state_machine.transition_to("wall") # returns void
```

### Steps to reproduce

```gdscript
extends Node

func foo() -> void:
	print("hello")

func _ready() -> void:
	return foo()
```

### Minimal reproduction project

[godot_4_return_value_regression.zip](https://github.com/godotengine/godot/files/10385377/godot_4_return_value_regression.zip)

is_member = true;
					setter_function = codegen.script->member_indices[var_name].setter;
					has_setter = setter_function != StringName();
					is_in_setter = has_setter && setter_function == codegen.function_name;
					member.mode = GDScriptCodeGenerator::Address::MEMBER;
					member.address = codegen.script->member_indices[var_name].index;
					member.type = codegen.script->member_indices[var_name].data_type;
				}
				GDScriptCodeGenerator::Address target;
				if (is_member) {
					target = member; 
				} else {
					target = _parse_expression(codegen, r_error, assignment->assignee);
					if (r_error) {
						return GDScriptCodeGenerator::Address();
					}
				}
				GDScriptCodeGenerator::Address assigned_value = _parse_expression(codegen, r_error, assignment->assigned_value);
				if (r_error) {
					return GDScriptCodeGenerator::Address();
				}
				GDScriptCodeGenerator::Address to_assign;
				bool has_operation = assignment->operation != GDScriptParser::AssignmentNode::OP_NONE;
				if (has_operation) {
					
					GDScriptCodeGenerator::Address op_result = codegen.add_temporary(_gdtype_from_datatype(assignment->get_datatype(), codegen.script));
					GDScriptCodeGenerator::Address og_value = _parse_expression(codegen, r_error, assignment->assignee);
					gen->write_binary_operator(op_result, assignment->variant_op, og_value, assigned_value);
					to_assign = op_result;
					if (og_value.mode == GDScriptCodeGenerator::Address::TEMPORARY) {