| ! { dg-do run } |
| ! { dg-output "Super(\n|\r\n|\r).*Sub" } |
| |
| ! Type-bound procedures |
| ! Check for calling right overloaded procedure. |
| |
| MODULE m |
| IMPLICIT NONE |
| |
| TYPE supert |
| CONTAINS |
| PROCEDURE, NOPASS :: proc => proc_super |
| END TYPE supert |
| |
| TYPE, EXTENDS(supert) :: subt |
| CONTAINS |
| PROCEDURE, NOPASS :: proc => proc_sub |
| END TYPE subt |
| |
| CONTAINS |
| |
| SUBROUTINE proc_super () |
| IMPLICIT NONE |
| WRITE (*,*) "Super" |
| END SUBROUTINE proc_super |
| |
| SUBROUTINE proc_sub () |
| IMPLICIT NONE |
| WRITE (*,*) "Sub" |
| END SUBROUTINE proc_sub |
| |
| END MODULE m |
| |
| PROGRAM main |
| USE m |
| IMPLICIT NONE |
| |
| TYPE(supert) :: super |
| TYPE(subt) :: sub |
| |
| CALL super%proc |
| CALL sub%proc |
| END PROGRAM main |