3 ! Type-bound procedures
4 ! Check basic calls to NOPASS type-bound procedures.
11 PROCEDURE, NOPASS :: func => func_add
12 PROCEDURE, NOPASS :: sub => sub_add
13 PROCEDURE, NOPASS :: echo => echo_add
18 PROCEDURE, NOPASS :: func => func_mul
19 PROCEDURE, NOPASS :: sub => sub_mul
20 PROCEDURE, NOPASS :: echo => echo_mul
25 INTEGER FUNCTION func_add (a, b)
31 INTEGER FUNCTION func_mul (a, b)
37 SUBROUTINE sub_add (a, b, c)
39 INTEGER, INTENT(IN) :: a, b
40 INTEGER, INTENT(OUT) :: c
42 END SUBROUTINE sub_add
44 SUBROUTINE sub_mul (a, b, c)
46 INTEGER, INTENT(IN) :: a, b
47 INTEGER, INTENT(OUT) :: c
49 END SUBROUTINE sub_mul
51 SUBROUTINE echo_add ()
53 WRITE (*,*) "Hi from adder!"
54 END SUBROUTINE echo_add
56 INTEGER FUNCTION echo_mul ()
59 WRITE (*,*) "Hi from muler!"
62 ! Do the testing here, in the same module as the type is.
71 IF (adder%func (2, 3) /= 5 .OR. muler%func (2, 3) /= 6) THEN
75 CALL adder%sub (2, 3, x)
80 CALL muler%sub (2, 3, x)
85 ! Check procedures without arguments.
98 ! { dg-final { cleanup-modules "m" } }