brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 90bb435 Raw
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