annotate gcc/testsuite/gfortran.dg/data_invalid.f90 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do compile }
kono
parents:
diff changeset
2 ! { dg-options "-std=f95 -fmax-errors=0" }
kono
parents:
diff changeset
3 !
kono
parents:
diff changeset
4 ! Testcases from PR fortran/24978
kono
parents:
diff changeset
5 !
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 SUBROUTINE data_init_scalar_invalid()
kono
parents:
diff changeset
8 integer :: a
kono
parents:
diff changeset
9 data a / 1 /
kono
parents:
diff changeset
10 data a / 1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 integer :: b = 0
kono
parents:
diff changeset
13 data b / 1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
14 END SUBROUTINE
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 SUBROUTINE data_init_array_invalid()
kono
parents:
diff changeset
17 ! initialize (at least) one element, re-initialize full array
kono
parents:
diff changeset
18 integer :: a(3)
kono
parents:
diff changeset
19 data a(2) / 2 /
kono
parents:
diff changeset
20 data a / 3*1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 ! initialize (at least) one element, re-initialize subsection including the element
kono
parents:
diff changeset
23 integer :: b(3)
kono
parents:
diff changeset
24 data b(2) / 2 /
kono
parents:
diff changeset
25 data b(1:2) / 2*1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 ! initialize subsection, re-initialize (intersecting) subsection
kono
parents:
diff changeset
28 integer :: c(3)
kono
parents:
diff changeset
29 data c(1:2) / 2*1 /
kono
parents:
diff changeset
30 data c(2:3) / 1,1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 ! initialize subsection, re-initialize full array
kono
parents:
diff changeset
33 integer :: d(3)
kono
parents:
diff changeset
34 data d(2:3) / 2*1 /
kono
parents:
diff changeset
35 data d / 2*2, 3 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 ! full array initializer, re-initialize (at least) one element
kono
parents:
diff changeset
38 integer :: e(3)
kono
parents:
diff changeset
39 data e / 3*1 /
kono
parents:
diff changeset
40 data e(2) / 2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 integer :: f(3) = 0 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
43 data f(2) / 1 /
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 ! full array initializer, re-initialize subsection
kono
parents:
diff changeset
46 integer :: g(3)
kono
parents:
diff changeset
47 data g / 3*1 /
kono
parents:
diff changeset
48 data g(1:2) / 2*2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 integer :: h(3) = 1 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
51 data h(2:3) / 2*2 /
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 ! full array initializer, re-initialize full array
kono
parents:
diff changeset
54 integer :: i(3)
kono
parents:
diff changeset
55 data i / 3*1 /
kono
parents:
diff changeset
56 data i / 2,2,2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 integer :: j(3) = 1 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
59 data j / 3*2 /
kono
parents:
diff changeset
60 END SUBROUTINE
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 SUBROUTINE data_init_matrix_invalid()
kono
parents:
diff changeset
63 ! initialize (at least) one element, re-initialize full matrix
kono
parents:
diff changeset
64 integer :: a(3,3)
kono
parents:
diff changeset
65 data a(2,2) / 1 /
kono
parents:
diff changeset
66 data a / 9*2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 ! initialize (at least) one element, re-initialize subsection
kono
parents:
diff changeset
69 integer :: b(3,3)
kono
parents:
diff changeset
70 data b(2,2) / 1 /
kono
parents:
diff changeset
71 data b(2,:) / 3*2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 ! initialize subsection, re-initialize (intersecting) subsection
kono
parents:
diff changeset
74 integer :: c(3,3)
kono
parents:
diff changeset
75 data c(3,:) / 3*1 /, c(:,3) / 3*2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 ! initialize subsection, re-initialize full array
kono
parents:
diff changeset
78 integer :: d(3,3)
kono
parents:
diff changeset
79 data d(2,:) / 1,2,3 /
kono
parents:
diff changeset
80 data d / 9*4 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 ! full array initializer, re-initialize (at least) one element
kono
parents:
diff changeset
83 integer :: e(3,3)
kono
parents:
diff changeset
84 data e / 9*1 /
kono
parents:
diff changeset
85 data e(2,3) / 2 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 integer :: f(3,3) = 1 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
88 data f(3,2) / 2 /
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 ! full array initializer, re-initialize subsection
kono
parents:
diff changeset
91 integer :: g(3,3)
kono
parents:
diff changeset
92 data g / 9 * 1 /
kono
parents:
diff changeset
93 data g(2:3,2:3) / 2, 2*3, 4 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 integer :: h(3,3) = 1 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
96 data h(2:3,2:3) / 2, 2*3, 4 /
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 ! full array initializer, re-initialize full array
kono
parents:
diff changeset
99 integer :: i(3,3)
kono
parents:
diff changeset
100 data i / 3*1, 3*2, 3*3 /
kono
parents:
diff changeset
101 data i / 9 * 1 / ! { dg-error "re-initialization" }
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 integer :: j(3,3) = 0 ! { dg-error "already is initialized" }
kono
parents:
diff changeset
104 data j / 9 * 1 /
kono
parents:
diff changeset
105 END SUBROUTINE
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 SUBROUTINE data_init_misc_invalid()
kono
parents:
diff changeset
108 ! wrong number of dimensions
kono
parents:
diff changeset
109 integer :: a(3)
kono
parents:
diff changeset
110 data a(1,1) / 1 / ! { dg-error "Rank mismatch" }
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 ! index out-of-bounds, direct access
kono
parents:
diff changeset
113 integer :: b(3)
kono
parents:
diff changeset
114 data b(-2) / 1 / ! { dg-error "below array lower bound" }
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 ! index out-of-bounds, implied do-loop (PR32315)
kono
parents:
diff changeset
117 integer :: i
kono
parents:
diff changeset
118 character(len=20), dimension(4) :: string
kono
parents:
diff changeset
119 data (string(i), i = 1, 5) / 'A', 'B', 'C', 'D', 'E' / ! { dg-error "above array upper bound" }
kono
parents:
diff changeset
120 END SUBROUTINE
kono
parents:
diff changeset
121
kono
parents:
diff changeset
122 ! { dg-excess-errors "" }