PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / typebound_generic_3.f03
blob6f7af2eafb6d00120318ec6880a1bbea59c342a9
1 ! { dg-do run }
3 ! Type-bound procedures
4 ! Check calls with GENERIC bindings.
6 MODULE m
7   IMPLICIT NONE
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
16     GENERIC :: gensub => plain_int, plain_real, passed_intint, passed_realreal
17   END TYPE t
19 CONTAINS
21   SUBROUTINE plain_int (x)
22     IMPLICIT NONE
23     INTEGER :: x
24     WRITE (*,*) "Plain Integer"
25   END SUBROUTINE plain_int
27   SUBROUTINE plain_real (x)
28     IMPLICIT NONE
29     REAL :: x
30     WRITE (*,*) "Plain Real"
31   END SUBROUTINE plain_real
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
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
47 END MODULE m
49 PROGRAM main
50   USE m
51   IMPLICIT NONE
53   TYPE(t) :: myobj
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
61 ! { dg-output "Plain Integer(\n|\r\n|\r).*Plain Real(\n|\r\n|\r).*Passed Integer(\n|\r\n|\r).*Passed Real" }