1! { dg-do run } 2 3! Type-bound procedures 4! Check calls with GENERIC bindings. 5 6MODULE 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 19CONTAINS 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 47END MODULE m 48 49PROGRAM 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) 59END 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" } 62