@@ -2358,6 +2358,24 @@ static int jl_subtype_le(jl_value_t *a, jl_value_t *b, int ta, int invariant)
2358
2358
return 1 ;
2359
2359
}
2360
2360
2361
+ if (jl_is_typevar (a )) {
2362
+ if (jl_is_typevar (b )) {
2363
+ return
2364
+ jl_subtype_le ((jl_value_t * )((jl_tvar_t * )a )-> ub ,
2365
+ (jl_value_t * )((jl_tvar_t * )b )-> ub , 0 , 0 ) &&
2366
+ jl_subtype_le ((jl_value_t * )((jl_tvar_t * )b )-> lb ,
2367
+ (jl_value_t * )((jl_tvar_t * )a )-> lb , 0 , 0 );
2368
+ }
2369
+ if (invariant ) {
2370
+ return 0 ;
2371
+ }
2372
+ return jl_subtype_le ((jl_value_t * )((jl_tvar_t * )a )-> ub , b , 0 , 0 );
2373
+ }
2374
+ if (jl_is_typevar (b )) {
2375
+ return jl_subtype_le (a , (jl_value_t * )((jl_tvar_t * )b )-> ub , 0 , 0 ) &&
2376
+ jl_subtype_le ((jl_value_t * )((jl_tvar_t * )b )-> lb , a , 0 , 0 );
2377
+ }
2378
+
2361
2379
size_t i ;
2362
2380
if (!ta && jl_is_uniontype (a )) {
2363
2381
jl_svec_t * ap = ((jl_uniontype_t * )a )-> types ;
@@ -2477,23 +2495,6 @@ static int jl_subtype_le(jl_value_t *a, jl_value_t *b, int ta, int invariant)
2477
2495
return 0 ;
2478
2496
}
2479
2497
2480
- if (jl_is_typevar (a )) {
2481
- if (jl_is_typevar (b )) {
2482
- return
2483
- jl_subtype_le ((jl_value_t * )((jl_tvar_t * )a )-> ub ,
2484
- (jl_value_t * )((jl_tvar_t * )b )-> ub , 0 , 0 ) &&
2485
- jl_subtype_le ((jl_value_t * )((jl_tvar_t * )b )-> lb ,
2486
- (jl_value_t * )((jl_tvar_t * )a )-> lb , 0 , 0 );
2487
- }
2488
- if (invariant ) {
2489
- return 0 ;
2490
- }
2491
- return jl_subtype_le ((jl_value_t * )((jl_tvar_t * )a )-> ub , b , 0 , 0 );
2492
- }
2493
- if (jl_is_typevar (b )) {
2494
- return jl_subtype_le (a , (jl_value_t * )((jl_tvar_t * )b )-> ub , 0 , 0 ) &&
2495
- jl_subtype_le ((jl_value_t * )((jl_tvar_t * )b )-> lb , a , 0 , 0 );
2496
- }
2497
2498
if ((jl_datatype_t * )a == jl_any_type ) return 0 ;
2498
2499
2499
2500
return jl_egal (a , b );
0 commit comments