! { dg-do compile } ! Type-bound procedures ! Check for correct access-checking on type-bound procedures. MODULE m IMPLICIT NONE TYPE t CONTAINS PROCEDURE, NOPASS, PRIVATE :: priv => proc PROCEDURE, NOPASS, PUBLIC :: publ => proc END TYPE t CONTAINS SUBROUTINE proc () END SUBROUTINE proc ! This is inside the module. SUBROUTINE test1 () IMPLICIT NONE TYPE(t) :: obj CALL obj%priv () ! { dg-bogus "PRIVATE" } CALL obj%publ () END SUBROUTINE test1 END MODULE m ! This is outside the module. SUBROUTINE test2 () USE m IMPLICIT NONE TYPE(t) :: obj CALL obj%priv () ! { dg-error "PRIVATE" } CALL obj%publ () END SUBROUTINE test2