llvm-project/flang/test/Semantics/blockconstruct01.f90
Peter Klausler c3148e9f69
[flang] Identify misparsed statement function in BLOCK in ASSOCIATE (#72148)
When a BLOCK construct is within an ASSOCIATE or related construct,
don't misinterpret an assignment to an array element of a construct
entity as being an impermissible definition of a local statement
function.
2023-11-13 16:37:18 -08:00

77 lines
1.5 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
! C1107 -- COMMON, EQUIVALENCE, INTENT, NAMELIST, OPTIONAL, VALUE or
! STATEMENT FUNCTIONS not allow in specification part
subroutine s1_c1107
common /nl/x
block
!ERROR: COMMON statement is not allowed in a BLOCK construct
common /nl/y
end block
end
subroutine s2_c1107
real x(100), i(5)
integer y(100), j(5)
equivalence (x, y)
block
!ERROR: EQUIVALENCE statement is not allowed in a BLOCK construct
equivalence (i, j)
end block
end
subroutine s3_c1107(x_in, x_out)
integer x_in, x_out
intent(in) x_in
block
!ERROR: INTENT statement is not allowed in a BLOCK construct
intent(out) x_out
end block
end
subroutine s4_c1107
namelist /nl/x
block
!ERROR: NAMELIST statement is not allowed in a BLOCK construct
namelist /nl/y
end block
end
subroutine s5_c1107(x,y)
integer x, y
value x
block
!ERROR: VALUE statement is not allowed in a BLOCK construct
value y
end block
end
subroutine s6_c1107(x, y)
integer x, y
optional x
block
!ERROR: OPTIONAL statement is not allowed in a BLOCK construct
optional y
end block
end
subroutine s7_c1107
integer x, arr(1)
inc(x) = x + 1
block
!ERROR: A statement function definition may not appear in a BLOCK construct
dec(x) = x - 1
arr(x) = x - 1 ! ok
end block
end
subroutine s8
real x(1)
associate (sf=>x)
block
integer :: j = 1
sf(j) = j ! looks like a statement function, but isn't one
end block
end associate
end