blob: cee5d4d82b27ffa066d21c4ad46d67c6c02f903a [file] [log] [blame]
! { dg-do compile }
! PR fortran/58331 - rank checking for CLASS dummy arguments
module mymod
implicit none
contains
subroutine mysub(a, n)
integer, intent(in) :: n
class(*), intent(in) :: a(n)
select type(a)
type is(integer)
print *,'a is integer'
print *, "n=", n, ' a=', a
class default
print *,'a is unsupported type'
stop 1
end select
end
! Assumed rank
subroutine sub_ar (a)
class(*), intent(in) :: a(..)
print *, rank (a), size (a), ":", shape (a)
end
! Assumed shape
subroutine sub_as1 (a)
class(*), intent(in) :: a(:)
print *, rank (a), size (a), ":", shape (a)
end
subroutine sub_as2 (b)
class(*), intent(in) :: b(:,:)
print *, rank (b), size (b), ":", shape (b)
end
end
program p
use mymod
implicit none
integer :: a(3) = [11, 12, 13]
integer :: b(2,2) = reshape([21, 22, 23, 24], [2,2])
integer :: c = 1
call mysub(a,3)
call mysub(b,4)
call sub_ar(a)
call sub_ar(b)
call sub_ar(c)
call sub_as1(a)
call sub_as2(b)
!
call mysub(c,1) ! { dg-error "rank-1 and scalar" }
call sub_as1(b) ! { dg-error "rank-1 and rank-2" }
call sub_as2(a) ! { dg-error "rank-2 and rank-1" }
end