aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/typebound_proc_1.f08
blob: 674d4e028f654448deab15c01ad2a9280244808f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
! { dg-do compile }

! Type-bound procedures
! Test that the basic syntax for specific bindings is parsed and resolved.

MODULE othermod
  IMPLICIT NONE

CONTAINS

  SUBROUTINE othersub ()
    IMPLICIT NONE
  END SUBROUTINE othersub

END MODULE othermod

MODULE testmod
  USE othermod
  IMPLICIT NONE

  TYPE t1
    ! Might be empty
  CONTAINS
    PROCEDURE proc1
    PROCEDURE, PASS(me) :: p2 => proc2
  END TYPE t1

  TYPE t2
    INTEGER :: x
  CONTAINS
    PRIVATE
    PROCEDURE, NOPASS, PRIVATE :: othersub
    PROCEDURE,NON_OVERRIDABLE,PUBLIC,PASS :: proc3
  END TYPE t2

  TYPE t3
  CONTAINS
    ! This might be empty for Fortran 2008
  END TYPE t3

  TYPE t4
  CONTAINS
    PRIVATE
    ! Empty, too
  END TYPE t4

CONTAINS
  
  SUBROUTINE proc1 (me)
    IMPLICIT NONE
    CLASS(t1) :: me
  END SUBROUTINE proc1

  REAL FUNCTION proc2 (x, me)
    IMPLICIT NONE
    REAL :: x
    CLASS(t1) :: me
    proc2 = x / 2
  END FUNCTION proc2

  INTEGER FUNCTION proc3 (me)
    IMPLICIT NONE
    CLASS(t2) :: me
    proc3 = 42
  END FUNCTION proc3

END MODULE testmod