@@ -403,7 +403,6 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
403
403
let element_kind = meet_array_element_kinds element_kind1 element_kind2 in
404
404
let < * contents, env_extension =
405
405
meet_array_contents env array_contents1 array_contents2
406
- ~meet_element_kind: element_kind
407
406
in
408
407
let < * length, env_extension' = meet env length1 length2 in
409
408
(* CR-someday vlaviron: If the element kind is Bottom, we could meet the
@@ -422,8 +421,7 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
422
421
Bottom
423
422
424
423
and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t )
425
- (array_contents2 : TG.array_contents Or_unknown.t )
426
- ~(meet_element_kind : _ Or_unknown_or_bottom.t ) =
424
+ (array_contents2 : TG.array_contents Or_unknown.t ) =
427
425
meet_unknown
428
426
(fun env (array_contents1 : TG.array_contents )
429
427
(array_contents2 : TG.array_contents ) :
@@ -442,20 +440,7 @@ and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
442
440
let < * fields_rev, env_extension' =
443
441
fields_rev_and_env_extension
444
442
in
445
- let < * field, env_extension =
446
- match meet_element_kind with
447
- | Bottom -> Bottom
448
- | Unknown ->
449
- (* vlaviron: If the meet of the kinds is Unknown, then both
450
- inputs had Unknown kinds. I don't see how we could end up
451
- with an array type where the contents are known but we
452
- don't know the kind, but in that case we wouldn't be able
453
- to call meet because the two sides may have different
454
- kinds. So we'll just return the first input, which is
455
- guaranteed to be a correct approximation of the meet. *)
456
- Ok (field1, TEE. empty)
457
- | Ok _ -> meet env field1 field2
458
- in
443
+ let < * field, env_extension = meet env field1 field2 in
459
444
let < + env_extension =
460
445
meet_env_extension env env_extension env_extension'
461
446
in
@@ -1224,10 +1209,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
1224
1209
} ) ->
1225
1210
let alloc_mode = join_alloc_mode alloc_mode1 alloc_mode2 in
1226
1211
let element_kind = join_array_element_kinds element_kind1 element_kind2 in
1227
- let contents =
1228
- join_array_contents env array_contents1 array_contents2
1229
- ~joined_element_kind: element_kind
1230
- in
1212
+ let contents = join_array_contents env array_contents1 array_contents2 in
1231
1213
let > + length = join env length1 length2 in
1232
1214
TG.Head_of_kind_value. create_array_with_contents ~element_kind ~length
1233
1215
contents alloc_mode
@@ -1238,8 +1220,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
1238
1220
Unknown
1239
1221
1240
1222
and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t )
1241
- (array_contents2 : TG.array_contents Or_unknown.t )
1242
- ~(joined_element_kind : _ Or_unknown_or_bottom.t ) =
1223
+ (array_contents2 : TG.array_contents Or_unknown.t ) =
1243
1224
join_unknown
1244
1225
(fun env (array_contents1 : TG.array_contents )
1245
1226
(array_contents2 : TG.array_contents ) : TG. array_contents Or_unknown. t ->
@@ -1254,11 +1235,7 @@ and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
1254
1235
List. fold_left2
1255
1236
(fun (fields_rev : _ Or_unknown.t ) field1 field2 : _ Or_unknown. t ->
1256
1237
let > * fields_rev = fields_rev in
1257
- let > + field =
1258
- match joined_element_kind with
1259
- | Bottom | Unknown -> Or_unknown. Unknown
1260
- | Ok _ -> join env field1 field2
1261
- in
1238
+ let > + field = join env field1 field2 in
1262
1239
field :: fields_rev)
1263
1240
(Or_unknown. Known [] ) fields1 fields2
1264
1241
in
0 commit comments