Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gfortran.dg / typebound_generic_3.f03
1 ! { dg-do run }
2
3 ! Type-bound procedures
4 ! Check calls with GENERIC bindings.
5
6 MODULE m
7   IMPLICIT NONE
8
9   TYPE t
10   CONTAINS
11     PROCEDURE, NOPASS :: plain_int
12     PROCEDURE, NOPASS :: plain_real
13     PROCEDURE, PASS(me) :: passed_intint
14     PROCEDURE, PASS(me) :: passed_realreal
15
16     GENERIC :: gensub => plain_int, plain_real, passed_intint, passed_realreal
17   END TYPE t
18
19 CONTAINS
20
21   SUBROUTINE plain_int (x)
22     IMPLICIT NONE
23     INTEGER :: x
24     WRITE (*,*) "Plain Integer"
25   END SUBROUTINE plain_int
26
27   SUBROUTINE plain_real (x)
28     IMPLICIT NONE
29     REAL :: x
30     WRITE (*,*) "Plain Real"
31   END SUBROUTINE plain_real
32
33   SUBROUTINE passed_intint (me, x, y)
34     IMPLICIT NONE
35     CLASS(t) :: me
36     INTEGER :: x, y
37     WRITE (*,*) "Passed Integer"
38   END SUBROUTINE passed_intint
39
40   SUBROUTINE passed_realreal (x, me, y)
41     IMPLICIT NONE
42     REAL :: x, y
43     CLASS(t) :: me
44     WRITE (*,*) "Passed Real"
45   END SUBROUTINE passed_realreal
46
47 END MODULE m
48
49 PROGRAM main
50   USE m
51   IMPLICIT NONE
52
53   TYPE(t) :: myobj
54
55   CALL myobj%gensub (5)
56   CALL myobj%gensub (2.5)
57   CALL myobj%gensub (5, 5)
58   CALL myobj%gensub (2.5, 2.5)
59 END PROGRAM main
60
61 ! { dg-output "Plain Integer(\n|\r\n|\r).*Plain Real(\n|\r\n|\r).*Passed Integer(\n|\r\n|\r).*Passed Real" }