1! { dg-do compile}
2! { dg-additional-options "-fcoarray=single" }
3!
4! TS 29113
5! C535a  An assumed-rank entity shall be a dummy variable that does not
6! have the CODIMENSION or VALUE attribute.
7! An assumed-rank object may have the CONTIGUOUS attribute.
8!
9
10! This test file contains tests that are expected to issue diagnostics
11! for invalid code.
12
13! Check that diagnostics are issued when dimension(..) is used to declare
14! things that are not dummy variables.
15
16subroutine s0 (a)
17  implicit none
18  integer :: a
19
20  integer :: goodlocal
21  integer :: badlocal1(..)  ! { dg-error "Assumed.rank" }
22  integer, dimension(..) :: badlocal2  ! { dg-error "Assumed.rank" }
23  integer :: badlocal3  ! { dg-error "Assumed.rank" }
24  dimension badlocal3(..)
25
26  integer :: goodcommon
27  integer :: badcommon1(..)  ! { dg-error "Assumed.rank" }
28  integer, dimension(..) :: badcommon2  ! { dg-error "Assumed.rank" }
29  integer :: badcommon3  ! { dg-error "Assumed.rank" }
30  dimension badcommon3(..)
31  common /frob/ goodcommon, badcommon1, badcommon2, badcommon3
32
33  integer :: goodstatic
34  integer :: badstatic1(..)  ! { dg-error "Assumed.rank" }
35  integer, dimension(..) :: badstatic2  ! { dg-error "Assumed.rank" }
36  integer :: badstatic3  ! { dg-error "Assumed.rank" }
37  dimension badstatic3(..)
38  save goodstatic, badstatic1, badstatic2, badstatic3
39
40  block
41    integer :: goodblocklocal
42    integer :: badblocklocal1(..)  ! { dg-error "Assumed.rank" }
43    integer, dimension(..) :: badblocklocal2  ! { dg-error "Assumed.rank" }
44    integer :: badblocklocal3  ! { dg-error "Assumed.rank" }
45    dimension badblocklocal3(..)
46  end block
47
48end subroutine
49
50module m
51  integer :: goodmodvar
52  integer :: badmodvar1(..)  ! { dg-error "Assumed.rank" }
53  integer, dimension(..) :: badmodvar2  ! { dg-error "Assumed.rank" }
54  integer :: badmodvar3  ! { dg-error "Assumed.rank" }
55  dimension badmodvar3(..)
56
57  save goodmodvar, badmodvar1, badmodvar2, badmodvar3
58
59  type :: t
60    integer :: goodcomponent
61    integer :: badcomponent1(..)  ! { dg-error "must have an explicit shape" }
62    integer, dimension(..) :: badcomponent2  ! { dg-error "must have an explicit shape" }
63  end type
64end module
65
66! Check that diagnostics are issued when dimension(..) is used in combination
67! with the forbidden attributes.
68
69subroutine s2 (b) ! { dg-error "has no IMPLICIT type" }
70  implicit none
71  integer, codimension[*] :: b(..) ! { dg-error "assumed-rank array" }
72end subroutine
73
74subroutine s5 (e) ! { dg-error "has no IMPLICIT type" }
75  implicit none
76  integer, value :: e(..) ! { dg-error "VALUE attribute conflicts with DIMENSION" }
77end subroutine
78
79