! RUN: %python %S/test_errors.py %s %flang_fc1 recursive subroutine sub(dp, dpp) procedure(inner) dp procedure(inner), pointer :: dpp procedure(inner) ext procedure(sub), pointer :: p1 => sub ! ok procedure(inner), pointer :: p2 => ext ! ok !ERROR: Procedure pointer 'p3' initializer 'inner' is neither an external nor a module procedure procedure(inner), pointer :: p3 => inner !ERROR: Procedure pointer 'p4' initializer 'dp' is neither an external nor a module procedure procedure(inner), pointer :: p4 => dp !ERROR: Procedure pointer 'p5' initializer 'dpp' is neither an external nor a module procedure procedure(inner), pointer :: p5 => dpp generic :: generic => ext !ERROR: 'generic' must be an abstract interface or a procedure with an explicit interface procedure(generic), pointer :: p6 ! => generic contains subroutine inner end end recursive function fun() result(res) procedure(fun), pointer :: p1 => fun ! ok !ERROR: Procedure pointer 'p2' initializer 'inner' is neither an external nor a module procedure procedure(inner), pointer :: p2 => inner res = 0. contains function inner() inner = 0. end end module m procedure(msub), pointer :: ps1 => msub ! ok procedure(mfun), pointer :: pf1 => mfun ! ok contains recursive subroutine msub procedure(msub), pointer :: ps2 => msub ! ok !ERROR: Procedure pointer 'ps3' initializer 'inner' is neither an external nor a module procedure procedure(inner), pointer :: ps3 => inner contains subroutine inner end end recursive function mfun() result(res) procedure(mfun), pointer :: pf2 => mfun ! ok !ERROR: Procedure pointer 'pf3' initializer 'inner' is neither an external nor a module procedure procedure(inner), pointer :: pf3 => inner res = 0. contains function inner() inner = 0. end end end