! { dg-do run } ! ! PR 40427: Procedure Pointer Components with OPTIONAL arguments ! ! Original test case by John McFarland ! Modified by Janus Weil PROGRAM prog ABSTRACT INTERFACE SUBROUTINE sub_template(i,j,o) INTEGER, INTENT(in) :: i INTEGER, INTENT(in), OPTIONAL :: j, o END SUBROUTINE sub_template END INTERFACE TYPE container PROCEDURE(sub_template), POINTER, NOPASS :: s END TYPE container PROCEDURE(sub_template), POINTER :: f TYPE (container) :: c c%s => sub f => sub CALL f(2,o=4) CALL c%s(3,o=6) CONTAINS SUBROUTINE sub(i,arg2,arg3) INTEGER, INTENT(in) :: i INTEGER, INTENT(in), OPTIONAL :: arg2, arg3 if (present(arg2)) call abort() if (.not. present(arg3)) call abort() if (2*i/=arg3) call abort() END SUBROUTINE sub END PROGRAM prog