! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic module m real, target :: x = 1. contains function rpf(x) real, intent(in out), target :: x real, pointer :: rpf rpf => x end real function rf(x) rf = x end subroutine test1 ! This is a valid assignment, not a statement function. ! Every other Fortran compiler misinterprets it! rpf(x) = 2. ! statement function or indirect assignment? print *, x end subroutine test2 !PORTABILITY: Name 'rf' from host scope should have a type declaration before its local statement function definition rf(x) = 3. end subroutine test3 external sf !ERROR: 'sf' has not been declared as an array or pointer-valued function sf(x) = 4. end function f() !ERROR: Recursive call to 'f' requires a distinct RESULT in its declaration !ERROR: Left-hand side of assignment is not definable !BECAUSE: 'f()' is not a variable or pointer f() = 1. ! statement function of same name as function end function g() result(r) !WARNING: Name 'g' from host scope should have a type declaration before its local statement function definition !ERROR: 'g' is already declared in this scoping unit g() = 1. ! statement function of same name as function end function h1() result(r) !ERROR: 'r' is not a callable procedure r() = 1. ! statement function of same name as function result end function h2() result(r) procedure(real), pointer :: r r() = 1. ! not a statement function end end