File tree Expand file tree Collapse file tree 1 file changed +3
-16
lines changed Expand file tree Collapse file tree 1 file changed +3
-16
lines changed Original file line number Diff line number Diff line change @@ -547,18 +547,6 @@ JL_DLLEXPORT jl_value_t *jl_type_unionall(jl_tvar_t *v, jl_value_t *body)
547
547
548
548
// --- type instantiation and cache ---
549
549
550
- static int contains_unions (jl_value_t * type )
551
- {
552
- if (jl_is_uniontype (type ) || jl_is_unionall (type )) return 1 ;
553
- if (!jl_is_datatype (type )) return 0 ;
554
- int i ;
555
- for (i = 0 ; i < jl_nparams (type ); i ++ ) {
556
- if (contains_unions (jl_tparam (type ,i )))
557
- return 1 ;
558
- }
559
- return 0 ;
560
- }
561
-
562
550
static intptr_t wrapper_id (jl_value_t * t )
563
551
{
564
552
// DataType wrappers occur often, e.g. when called as constructors.
@@ -579,14 +567,13 @@ static int is_typekey_ordered(jl_value_t **key, size_t n)
579
567
jl_value_t * k = key [i ];
580
568
if (jl_is_typevar (k ))
581
569
return 0 ;
582
- if (jl_is_type (k ) && k != jl_bottom_type && !wrapper_id (k ) &&
583
- !(jl_is_datatype (k ) && (((jl_datatype_t * )k )-> uid ||
584
- (!jl_has_free_typevars (k ) && !contains_unions (k )))))
585
- return 0 ;
586
570
if (jl_is_datatype (k )) {
587
571
jl_datatype_t * kdt = (jl_datatype_t * ) k ;
588
572
if (!is_typekey_ordered (jl_svec_data (kdt -> parameters ), jl_svec_len (kdt -> parameters )))
589
573
return 0 ;
574
+ } else {
575
+ if (jl_is_type (k ) && k != jl_bottom_type && !wrapper_id (k ))
576
+ return 0 ; // Union or UnionAll which is not a wrapper
590
577
}
591
578
}
592
579
return 1 ;
You can’t perform that action at this time.
0 commit comments