Peter Klausler 502e7690c3 [flang] Extend test_errors.py to test warnings and explanatory messages
flang/test/Semantics/test_errors,py only compares actual error messages
with expected error messages.  Many tests have expected warning messages
in them, but they are not checked.

A forthcoming change adds several new warning and explanatory messages
to the compiler, and these messages must be testable.

So (re-?) enable non-error message checking in test_errors.py and adjust some
existing tests to get them to pass.

Warning messages related to host-specific folding conditions will not
be emitted on all platforms, so they will continue to be ignored.

Differential Revision: https://reviews.llvm.org/D136479
2022-10-21 12:44:08 -07:00

50 lines
1.6 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
! C701 The type-param-value for a kind type parameter shall be a constant
! expression. This constraint looks like a mistake in the standard.
integer, parameter :: k = 8
real, parameter :: l = 8.0
integer :: n = 2
!ERROR: Must be a constant value
parameter(m=n)
integer(k) :: x
! C713 A scalar-int-constant-name shall be a named constant of type integer.
!ERROR: Must have INTEGER type, but is REAL(4)
integer(l) :: y
!ERROR: Must be a constant value
integer(n) :: z
type t(k)
integer, kind :: k
end type
!ERROR: Type parameter 'k' lacks a value and has no default
type(t( &
!ERROR: Must have INTEGER type, but is LOGICAL(4)
.true.)) :: w
!ERROR: Must have INTEGER type, but is REAL(4)
real :: u(l*2)
!ERROR: Must have INTEGER type, but is REAL(4)
character(len=l) :: v
!ERROR: Value of named constant 'o' (o) cannot be computed as a constant value
real, parameter :: o = o
!WARNING: INTEGER(4) division by zero
!ERROR: Must be a constant value
integer, parameter :: p = 0/0
!WARNING: INTEGER(4) division by zero
!ERROR: Must be a constant value
!WARNING: INTEGER(4) division by zero
!WARNING: INTEGER(4) division by zero
!WARNING: INTEGER(4) division by zero
integer, parameter :: q = 1+2*(1/0)
integer not_constant
!ERROR: Must be a constant value
integer, parameter :: s1 = not_constant/2
!ERROR: Must be a constant value
integer, parameter :: s2 = 3/not_constant
!WARNING: INTEGER(4) division by zero
!ERROR: Must be a constant value
integer(kind=2/0) r
integer, parameter :: sok(*)=[1,2]/[1,2]
!WARNING: INTEGER(4) division by zero
!ERROR: Must be a constant value
integer, parameter :: snok(*)=[1,2]/[1,0]
end