Skip to content

Commit 2a8e892

Browse files
Jameson Nashvtjnash
Jameson Nash
authored andcommitted
typemap: handle vararg tuple subtyping in jl_typemap_assoc_by_type
Fixes a crash while loading ASTInterpreter
1 parent 95428ba commit 2a8e892

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/typemap.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ int sigs_eq(jl_value_t *a, jl_value_t *b, int useenv)
595595
static jl_typemap_entry_t *jl_typemap_assoc_by_type_(jl_typemap_entry_t *ml, jl_tupletype_t *types, int8_t inexact, jl_svec_t **penv)
596596
{
597597
size_t n = jl_field_count(types);
598+
int typesisva = n == 0 ? 0 : jl_is_vararg_type(jl_tparam(types, n-1));
598599
while (ml != (void*)jl_nothing) {
599600
size_t lensig = jl_field_count(ml->sig);
600601
if (lensig == n || (ml->va && lensig <= n+1)) {
@@ -611,10 +612,10 @@ static jl_typemap_entry_t *jl_typemap_assoc_by_type_(jl_typemap_entry_t *ml, jl_
611612

612613
if (ismatch == 0)
613614
; // nothing
614-
else if (ml->isleafsig)
615+
else if (ml->isleafsig && !typesisva)
615616
ismatch = sig_match_by_type_leaf(jl_svec_data(types->parameters),
616617
ml->sig, lensig);
617-
else if (ml->issimplesig)
618+
else if (ml->issimplesig && !typesisva)
618619
ismatch = sig_match_by_type_simple(jl_svec_data(types->parameters), n,
619620
ml->sig, lensig, ml->va);
620621
else if (ml->tvars == jl_emptysvec)

0 commit comments

Comments
 (0)