blob: 2d15b31a1e466e6f0af226d45d32485013abe542 [file] [log] [blame]
! { dg-do compile }
!
! PR fortran/43591
!
! Pureness check for TPB/PPC in specification expressions
!
! Based on a test case of Thorsten Ohl
!
!
module m
implicit none
type t
procedure(p1_type), nopass, pointer :: p1 => NULL()
contains
procedure, nopass :: tbp => p1_type
end type t
contains
subroutine proc (t1, t2)
type(t), intent(in) :: t1, t2
integer, dimension(t1%p1(), t2%tbp()) :: table
end subroutine proc
pure function p1_type()
integer :: p1_type
p1_type = 42
end function p1_type
pure subroutine p(t1)
type(t), intent(inout) :: t1
integer :: a(t1%p1())
end subroutine p
end module m
module m2
implicit none
type t
procedure(p1_type), nopass, pointer :: p1 => NULL()
contains
procedure, nopass :: tbp => p1_type
end type t
contains
subroutine proc (t1, t2)
type(t), intent(in) :: t1, t2
integer, dimension(t1%p1()) :: table1 ! { dg-error "must be PURE" }
integer, dimension(t2%tbp()) :: table2 ! { dg-error "must be PURE" }
end subroutine proc
function p1_type()
integer :: p1_type
p1_type = 42
end function p1_type
end module m2