llvm-project/flang/test/Semantics/misc-declarations.f90

42 lines
1.6 KiB
Fortran

! RUN: %S/test_errors.sh %s %t %f18
! Miscellaneous constraint and requirement checking on declarations:
! - 8.5.6.2 & 8.5.6.3 constraints on coarrays
! - 8.5.19 constraints on the VOLATILE attribute
module m
!ERROR: 'mustbedeferred' is an ALLOCATABLE coarray and must have a deferred coshape
real, allocatable :: mustBeDeferred[*] ! C827
!ERROR: Component 'mustbeexplicit' is a non-ALLOCATABLE coarray and must have an explicit coshape
real :: mustBeExplicit[:] ! C828
type :: hasCoarray
real, allocatable :: coarray[:]
end type
real :: coarray[*]
type(hasCoarray) :: coarrayComponent
contains
!ERROR: VOLATILE attribute may not apply to an INTENT(IN) argument
subroutine C866(x)
intent(in) :: x
volatile :: x
!ERROR: VOLATILE attribute may apply only to a variable
volatile :: notData
external :: notData
end subroutine
subroutine C867
!ERROR: VOLATILE attribute may not apply to a coarray accessed by USE or host association
volatile :: coarray
!ERROR: VOLATILE attribute may not apply to a type with a coarray ultimate component accessed by USE or host association
volatile :: coarrayComponent
end subroutine
subroutine C868(coarray,coarrayComponent)
real, volatile :: coarray[*]
type(hasCoarray) :: coarrayComponent
block
!ERROR: VOLATILE attribute may not apply to a coarray accessed by USE or host association
volatile :: coarray
!ERROR: VOLATILE attribute may not apply to a type with a coarray ultimate component accessed by USE or host association
volatile :: coarrayComponent
end block
end subroutine
end module