Implement the UNSIGNED extension type and operations under control of a language feature flag (-funsigned). This is nearly identical to the UNSIGNED feature that has been available in Sun Fortran for years, and now implemented in GNU Fortran for gfortran 15, and proposed for ISO standardization in J3/24-116.txt. See the new documentation for details; but in short, this is C's unsigned type, with guaranteed modular arithmetic for +, -, and *, and the related transformational intrinsic functions SUM & al.
34 lines
1.1 KiB
Fortran
34 lines
1.1 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! C718 Each named constant in a complex literal constant shall be of type
|
|
! integer or real.
|
|
subroutine s()
|
|
integer :: ivar = 35
|
|
integer, parameter :: iconst = 35
|
|
real :: rvar = 68.9
|
|
real, parameter :: rconst = 68.9
|
|
character :: cvar = 'hello'
|
|
character, parameter :: cconst = 'hello'
|
|
logical :: lvar = .true.
|
|
logical, parameter :: lconst = .true.
|
|
complex :: cvar1 = (1, 1)
|
|
complex :: cvar2 = (1.0, 1.0)
|
|
complex :: cvar3 = (1.0, 1)
|
|
complex :: cvar4 = (1, 1.0)
|
|
complex :: cvar5 = (iconst, 1.0)
|
|
complex :: cvar6 = (iconst, rconst)
|
|
complex :: cvar7 = (rconst, iconst)
|
|
|
|
!ERROR: must be a constant
|
|
complex :: cvar8 = (ivar, 1.0)
|
|
!ERROR: must be a constant
|
|
!ERROR: must be a constant
|
|
complex :: cvar9 = (ivar, rvar)
|
|
!ERROR: must be a constant
|
|
!ERROR: must be a constant
|
|
complex :: cvar10 = (rvar, ivar)
|
|
!ERROR: operands must be INTEGER, UNSIGNED, REAL, or BOZ
|
|
complex :: cvar11 = (cconst, 1.0)
|
|
!ERROR: operands must be INTEGER, UNSIGNED, REAL, or BOZ
|
|
complex :: cvar12 = (lconst, 1.0)
|
|
end subroutine s
|