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