xref: /llvm-project/flang/test/Semantics/data06.f90 (revision 1c91d9bdea3b6c38e8fbce46ec8181a9c0aa26f8)
1*1c91d9bdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
2a20d48d7Speter klausler! DATA statement errors
3a20d48d7Speter klauslersubroutine s1
4a20d48d7Speter klausler  type :: t1
5a20d48d7Speter klausler    integer :: j = 666
6a20d48d7Speter klausler  end type t1
7a20d48d7Speter klausler  type(t1) :: t1x
8a20d48d7Speter klausler  !ERROR: Default-initialized 't1x' must not be initialized in a DATA statement
9a20d48d7Speter klausler  data t1x%j / 777 /
10c4f67ea1SPeter Klausler  type :: t2
11c4f67ea1SPeter Klausler    integer, allocatable :: j
12c4f67ea1SPeter Klausler    integer :: k
13c4f67ea1SPeter Klausler  end type t2
14c4f67ea1SPeter Klausler  type(t2) :: t2x
15c4f67ea1SPeter Klausler  data t2x%k / 777 / ! allocatable component is ok
16a20d48d7Speter klausler  integer :: ja = 888
17a20d48d7Speter klausler  !ERROR: Default-initialized 'ja' must not be initialized in a DATA statement
18a20d48d7Speter klausler  data ja / 999 /
19a20d48d7Speter klausler  integer :: a1(10)
20a20d48d7Speter klausler  !ERROR: DATA statement set has more values than objects
21a20d48d7Speter klausler  data a1(1:9:2) / 6 * 1 /
22a20d48d7Speter klausler  integer :: a2(10)
23a20d48d7Speter klausler  !ERROR: DATA statement set has no value for 'a2(2_8)'
24a20d48d7Speter klausler  data (a2(k),k=10,1,-2) / 4 * 1 /
25a20d48d7Speter klausler  integer :: a3(2)
26a20d48d7Speter klausler  !ERROR: DATA statement implied DO loop has a step value of zero
27a20d48d7Speter klausler  data (a3(j),j=1,2,0)/2*333/
28a20d48d7Speter klausler  integer :: a4(3)
29a20d48d7Speter klausler  !ERROR: DATA statement designator 'a4(5_8)' is out of range
30a20d48d7Speter klausler  data (a4(j),j=1,5,2) /3*222/
31ba038a30SMike Kashkarov  integer :: a5(3)
32ba038a30SMike Kashkarov  !ERROR: DATA statement designator 'a5(-2_8)' is out of range
33ba038a30SMike Kashkarov  data       a5(-2) / 1 /
34a20d48d7Speter klausler  interface
35a20d48d7Speter klausler    real function rfunc(x)
36a20d48d7Speter klausler      real, intent(in) :: x
37a20d48d7Speter klausler    end function
38a20d48d7Speter klausler  end interface
39a20d48d7Speter klausler  real, pointer :: rp
40a20d48d7Speter klausler  !ERROR: Procedure 'rfunc' may not be used to initialize 'rp', which is not a procedure pointer
41a20d48d7Speter klausler  data rp/rfunc/
42a20d48d7Speter klausler  procedure(rfunc), pointer :: rpp
43a20d48d7Speter klausler  real, target :: rt
4493dca9fbSEmil Kieri  !WARNING: Procedure pointer 'rpp' in a DATA statement is not standard
45a20d48d7Speter klausler  !ERROR: Data object 'rt' may not be used to initialize 'rpp', which is a procedure pointer
46a20d48d7Speter klausler  data rpp/rt/
47a20d48d7Speter klausler  !ERROR: Initializer for 'rt' must not be a pointer
48a20d48d7Speter klausler  data rt/null()/
49a20d48d7Speter klausler  !ERROR: Initializer for 'rt' must not be a procedure
50a20d48d7Speter klausler  data rt/rfunc/
51a20d48d7Speter klausler  integer :: jx, jy
5243b304b0Speter klausler  !WARNING: DATA statement value initializes 'jx' of type 'INTEGER(4)' with CHARACTER
53a20d48d7Speter klausler  data jx/'abc'/
54a20d48d7Speter klausler  !ERROR: DATA statement value could not be converted to the type 'INTEGER(4)' of the object 'jx'
55a20d48d7Speter klausler  data jx/t1()/
569a883bfaSpeter klausler  !ERROR: DATA statement value 'jy' for 'jx' is not a constant
57a20d48d7Speter klausler  data jx/jy/
58a20d48d7Speter klauslerend subroutine
59