1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
! { dg-do compile }
!
! Basic tests of SELECT RANK
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
!
subroutine foo1 (arg)
integer :: i
integer, dimension(3) :: arg
select rank (arg) ! { dg-error "must be an assumed rank variable" }
rank (3) ! { dg-error "Unexpected RANK statement" }
print *, arg
end select ! { dg-error "Expecting END SUBROUTINE" }
end
subroutine foo2 (arg)
integer :: i
integer, dimension(..) :: arg
select rank (arg)
rank (i) ! { dg-error "must be a scalar" }
print *, arg ! { dg-error "Expected RANK or RANK DEFAULT" }
end select
end
subroutine foo3 (arg)
integer :: i
integer, parameter :: r = 3
integer, dimension(..) :: arg
select rank (arg)
rank (16) ! { dg-error "must not be less than zero or greater than 15" }
print *, arg ! { dg-error "Expected RANK or RANK DEFAULT" }
rank (-1) ! { dg-error "must not be less than zero or greater than 15" }
print *, arg ! { dg-error "Expected RANK or RANK DEFAULT" }
rank (r) ! OK
print *, arg
end select
end
subroutine foo4 (arg)
integer :: i
integer, dimension(..), pointer :: arg
select rank (arg) ! { dg-error "cannot be used with the pointer or allocatable selector" }
rank (*) ! { dg-error "cannot be used with the pointer or allocatable selector" }
print *, arg(1:1)
rank (1)
print *, arg
end select
end
subroutine foo5 (arg)
integer :: i
integer, dimension(..), ALLOCATABLE :: arg
select rank (arg) ! { dg-error "cannot be used with the pointer or allocatable selector" }
rank (*) ! { dg-error "pointer or allocatable selector|deferred shape or assumed rank" }
print *, arg(1:1)
rank (1)
print *, arg
end select
end
subroutine foo6 (arg)
integer :: i
integer, dimension(..) :: arg
select rank (arg)
rank (*)
print *, arg ! { dg-error "assumed.size array" }
rank (1)
print *, arg
end select
end
subroutine foo7 (arg)
integer :: i
integer, dimension(..) :: arg
select rank (arg)
rank (1) ! { dg-error "is repeated" }
arg = 1
rank (1) ! { dg-error "is repeated" }
arg = 1
rank (*) ! { dg-error "is repeated" }
rank (*) ! { dg-error "is repeated" }
rank default ! { dg-error "is repeated" }
rank default ! { dg-error "is repeated" }
end select
end
|