1*d20f55fbSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 2*d20f55fbSPeter Klauslerrecursive subroutine sub(dp, dpp) 3*d20f55fbSPeter Klausler procedure(inner) dp 4*d20f55fbSPeter Klausler procedure(inner), pointer :: dpp 5*d20f55fbSPeter Klausler procedure(inner) ext 6*d20f55fbSPeter Klausler procedure(sub), pointer :: p1 => sub ! ok 7*d20f55fbSPeter Klausler procedure(inner), pointer :: p2 => ext ! ok 8*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'p3' initializer 'inner' is neither an external nor a module procedure 9*d20f55fbSPeter Klausler procedure(inner), pointer :: p3 => inner 10*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'p4' initializer 'dp' is neither an external nor a module procedure 11*d20f55fbSPeter Klausler procedure(inner), pointer :: p4 => dp 12*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'p5' initializer 'dpp' is neither an external nor a module procedure 13*d20f55fbSPeter Klausler procedure(inner), pointer :: p5 => dpp 14*d20f55fbSPeter Klausler generic :: generic => ext 15*d20f55fbSPeter Klausler !ERROR: 'generic' must be an abstract interface or a procedure with an explicit interface 16*d20f55fbSPeter Klausler procedure(generic), pointer :: p6 ! => generic 17*d20f55fbSPeter Klausler contains 18*d20f55fbSPeter Klausler subroutine inner 19*d20f55fbSPeter Klausler end 20*d20f55fbSPeter Klauslerend 21*d20f55fbSPeter Klauslerrecursive function fun() result(res) 22*d20f55fbSPeter Klausler procedure(fun), pointer :: p1 => fun ! ok 23*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'p2' initializer 'inner' is neither an external nor a module procedure 24*d20f55fbSPeter Klausler procedure(inner), pointer :: p2 => inner 25*d20f55fbSPeter Klausler res = 0. 26*d20f55fbSPeter Klausler contains 27*d20f55fbSPeter Klausler function inner() 28*d20f55fbSPeter Klausler inner = 0. 29*d20f55fbSPeter Klausler end 30*d20f55fbSPeter Klauslerend 31*d20f55fbSPeter Klauslermodule m 32*d20f55fbSPeter Klausler procedure(msub), pointer :: ps1 => msub ! ok 33*d20f55fbSPeter Klausler procedure(mfun), pointer :: pf1 => mfun ! ok 34*d20f55fbSPeter Klausler contains 35*d20f55fbSPeter Klausler recursive subroutine msub 36*d20f55fbSPeter Klausler procedure(msub), pointer :: ps2 => msub ! ok 37*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'ps3' initializer 'inner' is neither an external nor a module procedure 38*d20f55fbSPeter Klausler procedure(inner), pointer :: ps3 => inner 39*d20f55fbSPeter Klausler contains 40*d20f55fbSPeter Klausler subroutine inner 41*d20f55fbSPeter Klausler end 42*d20f55fbSPeter Klausler end 43*d20f55fbSPeter Klausler recursive function mfun() result(res) 44*d20f55fbSPeter Klausler procedure(mfun), pointer :: pf2 => mfun ! ok 45*d20f55fbSPeter Klausler !ERROR: Procedure pointer 'pf3' initializer 'inner' is neither an external nor a module procedure 46*d20f55fbSPeter Klausler procedure(inner), pointer :: pf3 => inner 47*d20f55fbSPeter Klausler res = 0. 48*d20f55fbSPeter Klausler contains 49*d20f55fbSPeter Klausler function inner() 50*d20f55fbSPeter Klausler inner = 0. 51*d20f55fbSPeter Klausler end 52*d20f55fbSPeter Klausler end 53*d20f55fbSPeter Klauslerend 54