Skip to content

Commit 12d2286

Browse files
vtjnashKristofferC
authored andcommitted
make recommendation clearer on manifest version mismatch (#54779)
It seems common for people to not infer the recommended action here, so make it clearer. (cherry picked from commit 54091ea)
1 parent 096c7df commit 12d2286

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/builtins.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,6 +1707,12 @@ static int references_name(jl_value_t *p, jl_typename_t *name, int affects_layou
17071707
if (jl_is_uniontype(p))
17081708
return references_name(((jl_uniontype_t*)p)->a, name, affects_layout) ||
17091709
references_name(((jl_uniontype_t*)p)->b, name, affects_layout);
1710+
if (jl_is_vararg(p)) {
1711+
jl_value_t *T = ((jl_vararg_t*)p)->T;
1712+
jl_value_t *N = ((jl_vararg_t*)p)->N;
1713+
return (T && references_name(T, name, affects_layout)) ||
1714+
(N && references_name(N, name, affects_layout));
1715+
}
17101716
if (jl_is_unionall(p))
17111717
return references_name((jl_value_t*)((jl_unionall_t*)p)->var->lb, name, 0) ||
17121718
references_name((jl_value_t*)((jl_unionall_t*)p)->var->ub, name, 0) ||

src/jltypes.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,7 +1936,7 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value
19361936
// normalize types equal to wrappers (prepare for Typeofwrapper)
19371937
jl_value_t *tw = extract_wrapper(pi);
19381938
if (tw && tw != pi && (tn != jl_type_typename || jl_typeof(pi) == jl_typeof(tw)) &&
1939-
jl_types_equal(pi, tw)) {
1939+
!jl_has_free_typevars(pi) && jl_types_equal(pi, tw)) {
19401940
iparams[i] = tw;
19411941
if (p) jl_gc_wb(p, tw);
19421942
}
@@ -2569,7 +2569,7 @@ jl_vararg_t *jl_wrap_vararg(jl_value_t *t, jl_value_t *n, int check, int nothrow
25692569
if (valid) {
25702570
t = normalize_unionalls(t);
25712571
jl_value_t *tw = extract_wrapper(t);
2572-
if (tw && t != tw && jl_types_equal(t, tw))
2572+
if (tw && t != tw && !jl_has_free_typevars(t) && jl_types_equal(t, tw))
25732573
t = tw;
25742574
}
25752575
}

test/core.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7467,6 +7467,13 @@ struct A43411{S, T}
74677467
end
74687468
@test isbitstype(A43411{(:a,), Tuple{Int}})
74697469

7470+
# issue #55189
7471+
struct A55189{N}
7472+
children::NTuple{N,A55189{N}}
7473+
end
7474+
@test fieldtype(A55189{2}, 1) === Tuple{A55189{2}, A55189{2}}
7475+
@assert !isbitstype(A55189{2})
7476+
74707477
# issue #44614
74717478
struct T44614_1{T}
74727479
m::T

0 commit comments

Comments
 (0)