blob: 6f7af2eafb6d00120318ec6880a1bbea59c342a9 [file] [log] [blame]
! { dg-do run }
! Type-bound procedures
! Check calls with GENERIC bindings.
MODULE m
IMPLICIT NONE
TYPE t
CONTAINS
PROCEDURE, NOPASS :: plain_int
PROCEDURE, NOPASS :: plain_real
PROCEDURE, PASS(me) :: passed_intint
PROCEDURE, PASS(me) :: passed_realreal
GENERIC :: gensub => plain_int, plain_real, passed_intint, passed_realreal
END TYPE t
CONTAINS
SUBROUTINE plain_int (x)
IMPLICIT NONE
INTEGER :: x
WRITE (*,*) "Plain Integer"
END SUBROUTINE plain_int
SUBROUTINE plain_real (x)
IMPLICIT NONE
REAL :: x
WRITE (*,*) "Plain Real"
END SUBROUTINE plain_real
SUBROUTINE passed_intint (me, x, y)
IMPLICIT NONE
CLASS(t) :: me
INTEGER :: x, y
WRITE (*,*) "Passed Integer"
END SUBROUTINE passed_intint
SUBROUTINE passed_realreal (x, me, y)
IMPLICIT NONE
REAL :: x, y
CLASS(t) :: me
WRITE (*,*) "Passed Real"
END SUBROUTINE passed_realreal
END MODULE m
PROGRAM main
USE m
IMPLICIT NONE
TYPE(t) :: myobj
CALL myobj%gensub (5)
CALL myobj%gensub (2.5)
CALL myobj%gensub (5, 5)
CALL myobj%gensub (2.5, 2.5)
END PROGRAM main
! { dg-output "Plain Integer(\n|\r\n|\r).*Plain Real(\n|\r\n|\r).*Passed Integer(\n|\r\n|\r).*Passed Real" }