202X feature: Conditional Expressions

I feel like the use of if (present(x)) then x endif is perhaps an over-simplified use case. As you say, the called subroutine can easily handle this case itself. But this stops being true if sub is called in multiple places, with different requirements in each case. e.g. if you had something like

function even_factorial(x) result(y)
  y = factorial(if (modulo(x,2)==0) then x else x+1 endif)
end function

function odd_factorial(x) result(y)
  y = factorial(if (modulo(x,2)==1) then x else x-1 endif)
end function