summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f90
blob: df57bcd41cbb92a5933071f12e96184fa3e6f42f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
implicit none
type t2
  integer :: x
end type t2

type, extends(t2) :: t2e
  integer :: y
end type t2e

type t
  class(*), allocatable :: au, au2(:,:)
  class(t2), allocatable :: at, at2(:,:)
end type t

type(t), target :: var, var0, var2(4), var2a(4)
class(*), allocatable :: au, au2(:,:)
class(t2), allocatable :: at, at2(:,:)


if (same_type_as (var%au, var%at)) error stop 1
if (same_type_as (var%au2, var%at)) error stop 2
if (same_type_as (var%au, var%at)) error stop 3
! Note: class(*) has no declared type, hence .false.
if (same_type_as (var%au, var0%au)) error stop 4
if (same_type_as (var%au2, var0%au2)) error stop 5
if (same_type_as (var%au, var0%au2)) error stop 6
call c1(var%au, var%au, var%au2)

if (.not.same_type_as (var%at, var%at)) error stop 7
if (.not.same_type_as (var%at2, var%at)) error stop 8
if (.not.same_type_as (var%at, var%at2)) error stop 9
if (.not.extends_type_of (var%at, var%at)) error stop 10
if (.not.extends_type_of (var%at2, var%at)) error stop 11
if (.not.extends_type_of (var%at, var%at2)) error stop 12
if (same_type_as (var%at, var0%au)) error stop 13
if (same_type_as (var%at2, var0%au2)) error stop 14
if (same_type_as (var%at, var0%au2)) error stop 15
call c2(var%at, var%at, var%at2)

if (same_type_as (au, var%at)) error stop 16
if (same_type_as (au2, var%at)) error stop 17
if (same_type_as (au, var%at)) error stop 18
! Note: class(*) has no declared type, hence .false.
if (same_type_as (au, var0%au)) error stop 19
if (same_type_as (au2, var0%au2)) error stop 20
if (same_type_as (au, var0%au2)) error stop 21
call c1(au, var%au, var%au2)

if (.not.same_type_as (at, var%at)) error stop 22
if (.not.same_type_as (at2, var%at)) error stop 23
if (.not.same_type_as (at, var%at2)) error stop 24
if (.not.extends_type_of (at, var%at)) error stop 25
if (.not.extends_type_of (at2, var%at)) error stop 26
if (.not.extends_type_of (at, var%at2)) error stop 27
if (same_type_as (at, var0%au)) error stop 28
if (same_type_as (at2, var0%au2)) error stop 29
if (same_type_as (at, var0%au2)) error stop 30
call c2(var%at, var%at, var%at2)

if (same_type_as (var%au, at)) error stop 31
if (same_type_as (var%au2, at)) error stop 32
if (same_type_as (var%au, at)) error stop 33
! Note: class(*) has no declared type, hence .false.
if (same_type_as (var%au, au)) error stop 34
if (same_type_as (var%au2, au2)) error stop 35
if (same_type_as (var%au, au2)) error stop 36
call c1(var%au, var%au, au2)

if (.not.same_type_as (var%at, at)) error stop 37
if (.not.same_type_as (var%at2, at)) error stop 38
if (.not.same_type_as (var%at, at2)) error stop 39
if (.not.extends_type_of (var%at, at)) error stop 40
if (.not.extends_type_of (var%at2, at)) error stop 41
if (.not.extends_type_of (var%at, at2)) error stop 42
if (same_type_as (var%at, au)) error stop 43
if (same_type_as (var%at2, au2)) error stop 44
if (same_type_as (var%at, au2)) error stop 45
call c2(var%at, var%at, at2)

allocate(t2e :: var0%at, var0%at2(4,4))
allocate(t2 :: var0%au, var0%au2(4,4))

if (.not.same_type_as (var0%au, var%at)) error stop 46
if (.not.same_type_as (var0%au2, var%at)) error stop 47
if (.not.same_type_as (var0%au, var%at)) error stop 48
if (.not.same_type_as (var0%au, var0%au2)) error stop 49
if (.not.same_type_as (var0%au2, var0%au2)) error stop 50
if (.not.same_type_as (var0%au, var0%au2)) error stop 51
if (.not.extends_type_of (var0%au, var%at)) error stop 52
if (.not.extends_type_of (var0%au2, var%at)) error stop 53
if (.not.extends_type_of (var0%au, var%at)) error stop 54
if (.not.extends_type_of (var0%au, var0%au2)) error stop 55
if (.not.extends_type_of (var0%au2, var0%au2)) error stop 56
if (.not.extends_type_of (var0%au, var0%au2)) error stop 57

if (.not.same_type_as (var0%au, at)) error stop 58
if (.not.same_type_as (var0%au2, at)) error stop 59
if (.not.same_type_as (var0%au, at2)) error stop 60
if (.not.extends_type_of (var0%au, at)) error stop 61
if (.not.extends_type_of (var0%au2, at)) error stop 62
if (.not.extends_type_of (var0%au, at2)) error stop 63

if (same_type_as (var0%at, var%at)) error stop 64
if (same_type_as (var0%at2, var%at)) error stop 65
if (same_type_as (var0%at, var%at)) error stop 66
if (same_type_as (var0%at, var0%au2)) error stop 67
if (same_type_as (var0%at2, var0%au2)) error stop 68
if (same_type_as (var0%at, var0%au2)) error stop 69
if (.not.extends_type_of (var0%at, var%at)) error stop 70
if (.not.extends_type_of (var0%at2, var%at)) error stop 71
if (.not.extends_type_of (var0%at, var%at)) error stop 72
if (.not.extends_type_of (var0%at, var0%au2)) error stop 73
if (.not.extends_type_of (var0%at2, var0%au2)) error stop 74
if (.not.extends_type_of (var0%at, var0%au2)) error stop 75

if (same_type_as (var0%at, at)) error stop 76
if (same_type_as (var0%at2, at)) error stop 77
if (same_type_as (var0%at, at2)) error stop 78
if (.not.extends_type_of (var0%at, at)) error stop 79
if (.not.extends_type_of (var0%at2, at)) error stop 80
if (.not.extends_type_of (var0%at, at2)) error stop 81

call c3(var0%au, var0%au2, var0%at, var0%at2)
call c4(var0%au, var0%au2, var0%at, var0%at2)

contains
  subroutine c1(x, y, z)
    class(*) :: x, y(..), z(..)
    if (same_type_as (x, var0%at)) error stop 82
    if (same_type_as (y, var0%at)) error stop 83
    if (same_type_as (z, var0%at)) error stop 84
    if (same_type_as (x, var%au)) error stop 85
    if (same_type_as (y, var%au2)) error stop 86
    if (same_type_as (z, var%au2)) error stop 87

    if (same_type_as (x, at)) error stop 88
    if (same_type_as (y, at)) error stop 89
    if (same_type_as (z, at)) error stop 90
    if (same_type_as (x, au)) error stop 91
    if (same_type_as (y, au2)) error stop 92
    if (same_type_as (z, au2)) error stop 93
  end

  subroutine c2(x, y, z)
    class(*) :: x, y(..), z(..)
    if (.not.same_type_as (x, var0%at)) error stop 94
    if (.not.same_type_as (y, var0%at)) error stop 95
    if (.not.same_type_as (z, var0%at)) error stop 96
    if (.not.extends_type_of (x, var0%at)) error stop 97
    if (.not.extends_type_of (y, var0%at)) error stop 98
    if (.not.extends_type_of (z, var0%at)) error stop 99
    if (same_type_as (x, var%au)) error stop 100
    if (same_type_as (y, var%au2)) error stop 101
    if (same_type_as (z, var%au2)) error stop 102

    if (.not.same_type_as (x, at)) error stop 103
    if (.not.same_type_as (y, at)) error stop 104
    if (.not.same_type_as (z, at)) error stop 105
    if (.not.extends_type_of (x, at)) error stop 106
    if (.not.extends_type_of (y, at)) error stop 107
    if (.not.extends_type_of (z, at)) error stop 108
    if (same_type_as (x, au)) error stop 109
    if (same_type_as (y, au2)) error stop 110
    if (same_type_as (z, au2)) error stop 111
  end

  subroutine c3(mau, mau2, mat, mat2)
    class(*) :: mau, mau2(:,:), mat, mat2(:,:)

    if (.not.same_type_as (mau, var%at)) error stop 112
    if (.not.same_type_as (mau2, var%at)) error stop 113
    if (.not.same_type_as (mau, var%at)) error stop 114
    if (.not.same_type_as (mau, var0%au2)) error stop 115
    if (.not.same_type_as (mau2, var0%au2)) error stop 116
    if (.not.same_type_as (mau, var0%au2)) error stop 117
    if (.not.extends_type_of (mau, var%at)) error stop 118
    if (.not.extends_type_of (mau2, var%at)) error stop 119
    if (.not.extends_type_of (mau, var%at)) error stop 120
    if (.not.extends_type_of (mau, var0%au2)) error stop 121
    if (.not.extends_type_of (mau2, var0%au2)) error stop 122
    if (.not.extends_type_of (mau, var0%au2)) error stop 123

    if (.not.same_type_as (mau, at)) error stop 124
    if (.not.same_type_as (mau2, at)) error stop 125
    if (.not.same_type_as (mau, at2)) error stop 126
    if (.not.extends_type_of (mau, at)) error stop 127
    if (.not.extends_type_of (mau2, at)) error stop 128
    if (.not.extends_type_of (mau, at2)) error stop 129

    if (same_type_as (mat, var%at)) error stop 130
    if (same_type_as (mat2, var%at)) error stop 131
    if (same_type_as (mat, var%at)) error stop 132
    if (same_type_as (mat, var0%au2)) error stop 133
    if (same_type_as (mat2, var0%au2)) error stop 134
    if (same_type_as (mat, var0%au2)) error stop 135
    if (.not.extends_type_of (mat, var%at)) error stop 136
    if (.not.extends_type_of (mat2, var%at)) error stop 137
    if (.not.extends_type_of (mat, var%at)) error stop 138
    if (.not.extends_type_of (mat, var0%au2)) error stop 139
    if (.not.extends_type_of (mat2, var0%au2)) error stop 140
    if (.not.extends_type_of (mat, var0%au2)) error stop 141

    if (same_type_as (mat, at)) error stop 142
    if (same_type_as (mat2, at)) error stop 143
    if (same_type_as (mat, at2)) error stop 144
    if (.not.extends_type_of (mat, at)) error stop 145
    if (.not.extends_type_of (mat2, at)) error stop 147
    if (.not.extends_type_of (mat, at2)) error stop 148
  end

  subroutine c4(mau, mau2, mat, mat2)
    class(*) :: mau(..), mau2(..), mat(..), mat2(..)

    if (.not.same_type_as (mau, var%at)) error stop 149
    if (.not.same_type_as (mau2, var%at)) error stop 150
    if (.not.same_type_as (mau, var%at)) error stop 151
    if (.not.same_type_as (mau, var0%au2)) error stop 152
    if (.not.same_type_as (mau2, var0%au2)) error stop 153
    if (.not.same_type_as (mau, var0%au2)) error stop 154
    if (.not.extends_type_of (mau, var%at)) error stop 155
    if (.not.extends_type_of (mau2, var%at)) error stop 156
    if (.not.extends_type_of (mau, var%at)) error stop 157
    if (.not.extends_type_of (mau, var0%au2)) error stop 158
    if (.not.extends_type_of (mau2, var0%au2)) error stop 159
    if (.not.extends_type_of (mau, var0%au2)) error stop 160

    if (.not.same_type_as (mau, at)) error stop 161
    if (.not.same_type_as (mau2, at)) error stop 162
    if (.not.same_type_as (mau, at2)) error stop 163
    if (.not.extends_type_of (mau, at)) error stop 164
    if (.not.extends_type_of (mau2, at)) error stop 165
    if (.not.extends_type_of (mau, at2)) error stop 166

    if (same_type_as (mat, var%at)) error stop 167
    if (same_type_as (mat2, var%at)) error stop 168
    if (same_type_as (mat, var%at)) error stop 169
    if (same_type_as (mat, var0%au2)) error stop 170
    if (same_type_as (mat2, var0%au2)) error stop 171
    if (same_type_as (mat, var0%au2)) error stop 172
    if (.not.extends_type_of (mat, var%at)) error stop 173
    if (.not.extends_type_of (mat2, var%at)) error stop 174
    if (.not.extends_type_of (mat, var%at)) error stop 175
    if (.not.extends_type_of (mat, var0%au2)) error stop 176
    if (.not.extends_type_of (mat2, var0%au2)) error stop 178
    if (.not.extends_type_of (mat, var0%au2)) error stop 179

    if (same_type_as (mat, at)) error stop 180
    if (same_type_as (mat2, at)) error stop 181
    if (same_type_as (mat, at2)) error stop 182
    if (.not.extends_type_of (mat, at)) error stop 183
    if (.not.extends_type_of (mat2, at)) error stop 184
    if (.not.extends_type_of (mat, at2)) error stop 185
  end
end