111
|
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
|
|
7 MODULE 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
|
|
20 CONTAINS
|
|
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
|
|
32 END MODULE m
|
|
33
|
|
34 PROGRAM 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
|
|
43 END PROGRAM main
|