diff --git a/flang/lib/Semantics/check-declarations.cpp b/flang/lib/Semantics/check-declarations.cpp index 6d69eb187bda0..ce7df5ea7ea13 100644 --- a/flang/lib/Semantics/check-declarations.cpp +++ b/flang/lib/Semantics/check-declarations.cpp @@ -564,6 +564,10 @@ void CheckHelper::CheckValue( "VALUE attribute may not apply to a type with a coarray ultimate component"_err_en_US); } } + if (evaluate::IsAssumedRank(symbol)) { + messages_.Say( + "VALUE attribute may not apply to an assumed-rank array"_err_en_US); + } } void CheckHelper::CheckAssumedTypeEntity( // C709 @@ -657,6 +661,10 @@ void CheckHelper::CheckObjectEntity( "Coarray '%s' may not have type TEAM_TYPE, C_PTR, or C_FUNPTR"_err_en_US, symbol.name()); } + if (evaluate::IsAssumedRank(symbol)) { + messages_.Say("Coarray '%s' may not be an assumed-rank array"_err_en_US, + symbol.name()); + } } if (details.isDummy()) { if (IsIntentOut(symbol)) { diff --git a/flang/test/Semantics/call14.f90 b/flang/test/Semantics/call14.f90 index 477c22b02f2cd..da273050b6f3a 100644 --- a/flang/test/Semantics/call14.f90 +++ b/flang/test/Semantics/call14.f90 @@ -7,7 +7,7 @@ module m end type contains !ERROR: VALUE attribute may apply only to a dummy data object - subroutine C863(notData,assumedSize,coarray,coarrayComponent) + subroutine C863(notData,assumedSize,coarray,coarrayComponent,assumedRank) external :: notData !ERROR: VALUE attribute may apply only to a dummy argument real, value :: notADummy @@ -18,6 +18,8 @@ subroutine C863(notData,assumedSize,coarray,coarrayComponent) real, value :: coarray[*] !ERROR: VALUE attribute may not apply to a type with a coarray ultimate component type(hasCoarray), value :: coarrayComponent + !ERROR: VALUE attribute may not apply to an assumed-rank array + real, value :: assumedRank(..) end subroutine subroutine C864(allocatable, inout, out, pointer, volatile) !ERROR: VALUE attribute may not apply to an ALLOCATABLE diff --git a/flang/test/Semantics/misc-declarations.f90 b/flang/test/Semantics/misc-declarations.f90 index ca5f6f7ccd976..74b71c0847f59 100644 --- a/flang/test/Semantics/misc-declarations.f90 +++ b/flang/test/Semantics/misc-declarations.f90 @@ -38,4 +38,8 @@ subroutine C868(coarray,coarrayComponent) volatile :: coarrayComponent end block end subroutine + subroutine C839(x) + !ERROR: Coarray 'x' may not be an assumed-rank array + real, intent(in) :: x(..)[*] + end end module