1! { dg-do compile }
2
3! Type-bound procedures
4! Check for correct access-checking on type-bound procedures.
5
6MODULE m
7  IMPLICIT NONE
8
9  TYPE t
10  CONTAINS
11    PROCEDURE, NOPASS, PRIVATE :: priv => proc
12    PROCEDURE, NOPASS, PUBLIC :: publ => proc
13  END TYPE t
14
15CONTAINS
16
17  SUBROUTINE proc ()
18  END SUBROUTINE proc
19
20  ! This is inside the module.
21  SUBROUTINE test1 ()
22    IMPLICIT NONE
23    TYPE(t) :: obj
24
25    CALL obj%priv () ! { dg-bogus "PRIVATE" }
26    CALL obj%publ ()
27  END SUBROUTINE test1
28
29END MODULE m
30
31! This is outside the module.
32SUBROUTINE test2 ()
33  USE m
34  IMPLICIT NONE
35  TYPE(t) :: obj
36
37  CALL obj%priv () ! { dg-error "PRIVATE" }
38  CALL obj%publ ()
39END SUBROUTINE test2
40