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
|