Skip to content

Commit 379f18e

Browse files
committed
Fix #20566
1 parent e355685 commit 379f18e

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

base/pkg/types.jl

+16-15
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,7 @@ function VersionSet(versions::Vector{VersionNumber})
3737
end
3838
VersionSet(versions::VersionNumber...) = VersionSet(VersionNumber[versions...])
3939

40-
show(io::IO, s::VersionSet) = join(io, s.intervals, "")
41-
isempty(s::VersionSet) = all(isempty, s.intervals)
42-
in(v::VersionNumber, s::VersionSet) = any(i->in(v,i), s.intervals)
43-
function intersect(A::VersionSet, B::VersionSet)
44-
ivals = [intersect(a,b) for a in A.intervals for b in B.intervals]
45-
filter!(i->!isempty(i), ivals)
46-
sort!(ivals, by=i->i.lower)
47-
VersionSet(ivals)
48-
end
49-
copy(A::VersionSet) = VersionSet(copy(A.intervals))
40+
const empty_versionset = VersionSet([v"0.0",v"0.0"])
5041

5142
function normalize!(A::VersionSet)
5243
# removes empty intervals and fuses intervals without gaps
@@ -79,6 +70,18 @@ function normalize!(A::VersionSet)
7970
return A
8071
end
8172

73+
show(io::IO, s::VersionSet) = join(io, s.intervals, "")
74+
isempty(s::VersionSet) = all(isempty, s.intervals)
75+
in(v::VersionNumber, s::VersionSet) = any(i->in(v,i), s.intervals)
76+
function intersect(A::VersionSet, B::VersionSet)
77+
(isempty(A) || isempty(B)) && return normalize!(copy(empty_versionset))
78+
ivals = [intersect(a,b) for a in A.intervals for b in B.intervals]
79+
filter!(i->!isempty(i), ivals)
80+
sort!(ivals, by=i->i.lower)
81+
VersionSet(ivals)
82+
end
83+
copy(A::VersionSet) = VersionSet(copy(A.intervals))
84+
8285
union(A::VersionSet, B::VersionSet) = union!(copy(A), B)
8386
function union!(A::VersionSet, B::VersionSet)
8487
A == B && return normalize!(A)
@@ -176,13 +179,11 @@ mutable struct ResolveBacktraceItem
176179
ResolveBacktraceItem(reason, versionreq::VersionReq) = new(versionreq, WhyReq[(versionreq,reason)])
177180
end
178181

179-
const empty_versionset = VersionSet([v"0.0",v"0.0"])
180-
181182
function push!(ritem::ResolveBacktraceItem, reason, versionset::VersionSet)
182183
if isa(ritem.versionreq, VersionSet)
183184
ritem.versionreq = ritem.versionreq versionset
184185
elseif ritem.versionreq versionset
185-
ritem.versionreq = empty_versionset
186+
ritem.versionreq = copy(empty_versionset)
186187
end
187188
push!(ritem.why, (versionset,reason))
188189
end
@@ -192,10 +193,10 @@ function push!(ritem::ResolveBacktraceItem, reason, version::VersionNumber)
192193
if version ritem.versionreq
193194
ritem.versionreq = version
194195
else
195-
ritem.versionreq = empty_versionset
196+
ritem.versionreq = copy(empty_versionset)
196197
end
197198
elseif ritem.versionreq version
198-
ritem.versionreq = empty_versionset
199+
ritem.versionreq = copy(empty_versionset)
199200
end
200201
push!(ritem.why, (version,reason))
201202
end

0 commit comments

Comments
 (0)