PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / typebound_proc_1.f08
blob674d4e028f654448deab15c01ad2a9280244808f
1 ! { dg-do compile }
3 ! Type-bound procedures
4 ! Test that the basic syntax for specific bindings is parsed and resolved.
6 MODULE othermod
7   IMPLICIT NONE
9 CONTAINS
11   SUBROUTINE othersub ()
12     IMPLICIT NONE
13   END SUBROUTINE othersub
15 END MODULE othermod
17 MODULE testmod
18   USE othermod
19   IMPLICIT NONE
21   TYPE t1
22     ! Might be empty
23   CONTAINS
24     PROCEDURE proc1
25     PROCEDURE, PASS(me) :: p2 => proc2
26   END TYPE t1
28   TYPE t2
29     INTEGER :: x
30   CONTAINS
31     PRIVATE
32     PROCEDURE, NOPASS, PRIVATE :: othersub
33     PROCEDURE,NON_OVERRIDABLE,PUBLIC,PASS :: proc3
34   END TYPE t2
36   TYPE t3
37   CONTAINS
38     ! This might be empty for Fortran 2008
39   END TYPE t3
41   TYPE t4
42   CONTAINS
43     PRIVATE
44     ! Empty, too
45   END TYPE t4
47 CONTAINS
48   
49   SUBROUTINE proc1 (me)
50     IMPLICIT NONE
51     CLASS(t1) :: me
52   END SUBROUTINE proc1
54   REAL FUNCTION proc2 (x, me)
55     IMPLICIT NONE
56     REAL :: x
57     CLASS(t1) :: me
58     proc2 = x / 2
59   END FUNCTION proc2
61   INTEGER FUNCTION proc3 (me)
62     IMPLICIT NONE
63     CLASS(t2) :: me
64     proc3 = 42
65   END FUNCTION proc3
67 END MODULE testmod