Skip to content

Commit

Permalink
subtype: replace leaf-bound typevars if they would result in Tuple{Un…
Browse files Browse the repository at this point in the history
…ion{}} otherwise

Refs: #49111
  • Loading branch information
vtjnash committed Apr 17, 2023
1 parent 32003af commit a7296d5
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions src/subtype.c
Original file line number Diff line number Diff line change
Expand Up @@ -2760,10 +2760,9 @@ static jl_value_t *finish_unionall(jl_value_t *res JL_MAYBE_UNROOTED, jl_varbind
// given x<:T<:x, substitute x for T
varval = vb->ub;
}
// TODO: `vb.occurs_cov == 1` here allows substituting Tuple{<:X} => Tuple{X},
// which is valid but changes some ambiguity errors so we don't need to do it yet.
else if ((/*vb->occurs_cov == 1 || */is_leaf_bound(vb->ub)) &&
!var_occurs_invariant(u->body, u->var, 0)) {
// TODO: `vb.occurs_cov == 1`, we could also substitute Tuple{<:X} => Tuple{X},
// but it may change some ambiguity errors so we don't need to do it yet.
else if (vb->occurs_cov && is_leaf_bound(vb->ub) && !jl_has_free_typevars(vb->ub)) {
// replace T<:x with x in covariant position when possible
varval = vb->ub;
}
Expand Down

0 comments on commit a7296d5

Please sign in to comment.