OSDN Git Service

PR debug/43329
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / typebound_proc_1.f08
1 ! { dg-do compile }
2
3 ! Type-bound procedures
4 ! Test that the basic syntax for specific bindings is parsed and resolved.
5
6 MODULE othermod
7   IMPLICIT NONE
8
9 CONTAINS
10
11   SUBROUTINE othersub ()
12     IMPLICIT NONE
13   END SUBROUTINE othersub
14
15 END MODULE othermod
16
17 MODULE testmod
18   USE othermod
19   IMPLICIT NONE
20
21   TYPE t1
22     ! Might be empty
23   CONTAINS
24     PROCEDURE proc1
25     PROCEDURE, PASS(me) :: p2 => proc2
26   END TYPE t1
27
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
35
36   TYPE t3
37   CONTAINS
38     ! This might be empty for Fortran 2008
39   END TYPE t3
40
41   TYPE t4
42   CONTAINS
43     PRIVATE
44     ! Empty, too
45   END TYPE t4
46
47 CONTAINS
48   
49   SUBROUTINE proc1 (me)
50     IMPLICIT NONE
51     CLASS(t1) :: me
52   END SUBROUTINE proc1
53
54   REAL FUNCTION proc2 (x, me)
55     IMPLICIT NONE
56     REAL :: x
57     CLASS(t1) :: me
58     proc2 = x / 2
59   END FUNCTION proc2
60
61   INTEGER FUNCTION proc3 (me)
62     IMPLICIT NONE
63     CLASS(t2) :: me
64     proc3 = 42
65   END FUNCTION proc3
66
67 END MODULE testmod
68
69 ! { dg-final { cleanup-modules "testmod" } }