! { dg-do compile } ! { dg-additional-options "-fcoarray=single" } ! ! TS 29113 ! C407a An assumed-type entity shall be a dummy variable that does not ! have the ALLOCATABLE, CODIMENSION, INTENT(OUT), POINTER, or VALUE ! attribute and is not an explicit-shape array. ! ! This test file contains tests that are expected to issue diagnostics ! for invalid code. ! Check that diagnostics are issued when type(*) is used to declare things ! that are not dummy variables. subroutine s0 (a) implicit none integer :: a integer :: goodlocal type(*) :: badlocal ! { dg-error "Assumed.type" } integer :: goodcommon type(*) :: badcommon ! { dg-error "Assumed.type" } common /frob/ goodcommon, badcommon integer :: goodstatic type(*) :: badstatic ! { dg-error "Assumed.type" } save goodstatic, badstatic block integer :: goodlocal2 type(*) :: badlocal2 ! { dg-error "Assumed.type" } end block end subroutine module m integer :: goodmodvar type(*) :: badmodvar ! { dg-error "Assumed.type" } save goodmodvar, badmodvar type :: t integer :: goodcomponent type(*) :: badcomponent ! { dg-error "Assumed.type" } end type end module ! Check that diagnostics are issued when type(*) is used in combination ! with the forbidden attributes. subroutine s1 (a) ! { dg-error "Assumed.type" } implicit none type(*), allocatable :: a end subroutine subroutine s2 (b) ! { dg-error "Assumed.type" } implicit none type(*), codimension[*] :: b(:,:) end subroutine subroutine s3 (c) ! { dg-error "Assumed.type" } implicit none type(*), intent(out) :: c end subroutine subroutine s4 (d) ! { dg-error "Assumed.type" } implicit none type(*), pointer :: d end subroutine subroutine s5 (e) ! { dg-error "Assumed.type" } implicit none type(*), value :: e end subroutine ! Check that diagnostics are issued when type(*) is used to declare ! a dummy variable that is an explicit-shape array. subroutine s6 (n, f) ! { dg-error "Assumed.type" } implicit none integer n type(*) :: f(n,n) end subroutine subroutine s7 (g) ! { dg-error "Assumed.type" } implicit none type(*) :: g(10) end subroutine