54 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12recursive subroutine sub(dp, dpp)3 procedure(inner) dp4 procedure(inner), pointer :: dpp5 procedure(inner) ext6 procedure(sub), pointer :: p1 => sub ! ok7 procedure(inner), pointer :: p2 => ext ! ok8 !ERROR: Procedure pointer 'p3' initializer 'inner' is neither an external nor a module procedure9 procedure(inner), pointer :: p3 => inner10 !ERROR: Procedure pointer 'p4' initializer 'dp' is neither an external nor a module procedure11 procedure(inner), pointer :: p4 => dp12 !ERROR: Procedure pointer 'p5' initializer 'dpp' is neither an external nor a module procedure13 procedure(inner), pointer :: p5 => dpp14 generic :: generic => ext15 !ERROR: 'generic' must be an abstract interface or a procedure with an explicit interface16 procedure(generic), pointer :: p6 ! => generic17 contains18 subroutine inner19 end20end21recursive function fun() result(res)22 procedure(fun), pointer :: p1 => fun ! ok23 !ERROR: Procedure pointer 'p2' initializer 'inner' is neither an external nor a module procedure24 procedure(inner), pointer :: p2 => inner25 res = 0.26 contains27 function inner()28 inner = 0.29 end30end31module m32 procedure(msub), pointer :: ps1 => msub ! ok33 procedure(mfun), pointer :: pf1 => mfun ! ok34 contains35 recursive subroutine msub36 procedure(msub), pointer :: ps2 => msub ! ok37 !ERROR: Procedure pointer 'ps3' initializer 'inner' is neither an external nor a module procedure38 procedure(inner), pointer :: ps3 => inner39 contains40 subroutine inner41 end42 end43 recursive function mfun() result(res)44 procedure(mfun), pointer :: pf2 => mfun ! ok45 !ERROR: Procedure pointer 'pf3' initializer 'inner' is neither an external nor a module procedure46 procedure(inner), pointer :: pf3 => inner47 res = 0.48 contains49 function inner()50 inner = 0.51 end52 end53end54