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