! { dg-do compile } ! ! PR fortran/ ! ! Contributed by Neil Carlson ! ! Check whether passing an intent(in) pointer ! to an intent(inout) nonpointer is allowed ! module modA type :: typeA integer, pointer :: ptr end type contains subroutine foo (a,b,c) type(typeA), intent(in) :: a type(typeA), intent(in) , pointer :: b class(typeA), intent(in) , pointer :: c call bar (a%ptr) call bar2 (b) call bar3 (b) call bar2 (c) call bar3 (c) call bar2p (b) ! { dg-error "INTENT\\(IN\\) in pointer association context \\(actual argument to INTENT = OUT/INOUT" } call bar3p (b) ! { dg-error "Actual argument to .n. at \\(1\\) must be polymorphic" } call bar2p (c) ! { dg-error "INTENT\\(IN\\) in pointer association context \\(actual argument to INTENT = OUT/INOUT" } call bar3p (c) ! { dg-error "INTENT\\(IN\\) in pointer association context \\(actual argument to INTENT = OUT/INOUT" } end subroutine subroutine bar (n) integer, intent(inout) :: n end subroutine subroutine bar2 (n) type(typeA), intent(inout) :: n end subroutine subroutine bar3 (n) class(typeA), intent(inout) :: n end subroutine subroutine bar2p (n) type(typeA), intent(inout), pointer :: n end subroutine subroutine bar3p (n) class(typeA), intent(inout), pointer :: n end subroutine end module