@@ -393,7 +393,6 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
393
393
let element_kind = meet_array_element_kinds element_kind1 element_kind2 in
394
394
let < * contents, env_extension =
395
395
meet_array_contents env array_contents1 array_contents2
396
- ~meet_element_kind: element_kind
397
396
in
398
397
let < * length, env_extension' = meet env length1 length2 in
399
398
(* CR-someday vlaviron: If the element kind is Bottom, we could meet the
@@ -411,8 +410,7 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
411
410
Bottom
412
411
413
412
and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t )
414
- (array_contents2 : TG.array_contents Or_unknown.t )
415
- ~(meet_element_kind : _ Or_unknown_or_bottom.t ) =
413
+ (array_contents2 : TG.array_contents Or_unknown.t ) =
416
414
meet_unknown
417
415
(fun env (array_contents1 : TG.array_contents )
418
416
(array_contents2 : TG.array_contents ) :
@@ -431,20 +429,7 @@ and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
431
429
let < * fields_rev, env_extension' =
432
430
fields_rev_and_env_extension
433
431
in
434
- let < * field, env_extension =
435
- match meet_element_kind with
436
- | Bottom -> Bottom
437
- | Unknown ->
438
- (* vlaviron: If the meet of the kinds is Unknown, then both
439
- inputs had Unknown kinds. I don't see how we could end up
440
- with an array type where the contents are known but we
441
- don't know the kind, but in that case we wouldn't be able
442
- to call meet because the two sides may have different
443
- kinds. So we'll just return the first input, which is
444
- guaranteed to be a correct approximation of the meet. *)
445
- Ok (field1, TEE. empty)
446
- | Ok _ -> meet env field1 field2
447
- in
432
+ let < * field, env_extension = meet env field1 field2 in
448
433
let < + env_extension =
449
434
meet_env_extension env env_extension env_extension'
450
435
in
@@ -1201,10 +1186,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
1201
1186
} ) ->
1202
1187
let alloc_mode = join_alloc_mode alloc_mode1 alloc_mode2 in
1203
1188
let element_kind = join_array_element_kinds element_kind1 element_kind2 in
1204
- let contents =
1205
- join_array_contents env array_contents1 array_contents2
1206
- ~joined_element_kind: element_kind
1207
- in
1189
+ let contents = join_array_contents env array_contents1 array_contents2 in
1208
1190
let > + length = join env length1 length2 in
1209
1191
TG.Head_of_kind_value. create_array_with_contents ~element_kind ~length
1210
1192
contents alloc_mode
@@ -1214,8 +1196,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
1214
1196
Unknown
1215
1197
1216
1198
and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t )
1217
- (array_contents2 : TG.array_contents Or_unknown.t )
1218
- ~(joined_element_kind : _ Or_unknown_or_bottom.t ) =
1199
+ (array_contents2 : TG.array_contents Or_unknown.t ) =
1219
1200
join_unknown
1220
1201
(fun env (array_contents1 : TG.array_contents )
1221
1202
(array_contents2 : TG.array_contents ) : TG. array_contents Or_unknown. t ->
@@ -1230,11 +1211,7 @@ and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
1230
1211
List. fold_left2
1231
1212
(fun (fields_rev : _ Or_unknown.t ) field1 field2 : _ Or_unknown. t ->
1232
1213
let > * fields_rev = fields_rev in
1233
- let > + field =
1234
- match joined_element_kind with
1235
- | Bottom | Unknown -> Or_unknown. Unknown
1236
- | Ok _ -> join env field1 field2
1237
- in
1214
+ let > + field = join env field1 field2 in
1238
1215
field :: fields_rev)
1239
1216
(Or_unknown. Known [] ) fields1 fields2
1240
1217
in
0 commit comments