1! { dg-do run } 2! { dg-output "Super(\n|\r\n|\r).*Sub" } 3 4! Type-bound procedures 5! Check for calling right overloaded procedure. 6 7MODULE m 8 IMPLICIT NONE 9 10 TYPE supert 11 CONTAINS 12 PROCEDURE, NOPASS :: proc => proc_super 13 END TYPE supert 14 15 TYPE, EXTENDS(supert) :: subt 16 CONTAINS 17 PROCEDURE, NOPASS :: proc => proc_sub 18 END TYPE subt 19 20CONTAINS 21 22 SUBROUTINE proc_super () 23 IMPLICIT NONE 24 WRITE (*,*) "Super" 25 END SUBROUTINE proc_super 26 27 SUBROUTINE proc_sub () 28 IMPLICIT NONE 29 WRITE (*,*) "Sub" 30 END SUBROUTINE proc_sub 31 32END MODULE m 33 34PROGRAM main 35 USE m 36 IMPLICIT NONE 37 38 TYPE(supert) :: super 39 TYPE(subt) :: sub 40 41 CALL super%proc 42 CALL sub%proc 43END PROGRAM main 44