What contract does a non-void function's declared return type establish?
void
The caller always receives a string regardless of the declaration.
The value sent back by return must be compatible with the declared return type.
return
Every parameter must have exactly the same type as the return type.
The function may never use a return statement with a value.