fix warnings for multiple returns: all tests pass
two warnings are issued (must and may), but only the last one (may) is correct
TODO: warn when leaving main and not at return