@@ -70,12 +70,12 @@ function normalize!(A::VersionSet)
70
70
lo = lo1
71
71
continue
72
72
end
73
- fuse && splice! (ivals, (k+ 1 ): k0, [ VersionInterval (lo, up),] )
73
+ fuse && splice! (ivals, (k+ 1 ): k0, ( VersionInterval (lo, up),) )
74
74
fuse = false
75
75
lo, up = lo1, up1
76
76
k0 = k
77
77
end
78
- fuse && splice! (ivals, 1 : k0, [ VersionInterval (lo, up),] )
78
+ fuse && splice! (ivals, 1 : k0, ( VersionInterval (lo, up),) )
79
79
return A
80
80
end
81
81
@@ -94,10 +94,10 @@ function union!(A::VersionSet, B::VersionSet)
94
94
for k1 = k0: length (ivals)
95
95
intA = ivals[k1]
96
96
if uB < intA. lower
97
- splice! (ivals, k0: (k1- 1 ), [ VersionInterval (lB, uB),] )
97
+ splice! (ivals, k0: (k1- 1 ), ( VersionInterval (lB, uB),) )
98
98
break
99
99
elseif uB ∈ intA || k1 == length (ivals)
100
- splice! (ivals, k0: k1, [ VersionInterval (lB, max (uB, intA. upper)),] )
100
+ splice! (ivals, k0: k1, ( VersionInterval (lB, max (uB, intA. upper)),) )
101
101
break
102
102
end
103
103
end
@@ -151,48 +151,50 @@ show(io::IO, f::Fixed) = isempty(f.requires) ?
151
151
# required by anything that processes these things.
152
152
153
153
154
+ typealias VersionReq Union{VersionNumber,VersionSet}
155
+ typealias WhyReq Tuple{VersionReq,Any}
156
+
154
157
# This is used to keep track of dependency relations when propagating
155
158
# requirements, so as to emit useful information in case of unsatisfiable
156
159
# conditions.
157
- # The `versionset ` field keeps track of the remaining allowed versions,
160
+ # The `versionreq ` field keeps track of the remaining allowed versions,
158
161
# intersecting all requirements.
159
162
# The `why` field is a Vector which keeps track of the requirements. Each
160
163
# entry is a Tuple of two elements:
161
164
# 1) the first element is the version requirement (can be a single VersionNumber
162
- # or a VersionSet.
165
+ # or a VersionSet) .
163
166
# 2) the second element can be either :fixed (for requirements induced by
164
167
# fixed packages), :required (for requirements induced by explicitly
165
168
# required packages), or a Pair p=>backtrace_item (for requirements induced
166
169
# indirectly, where `p` is the package name and `backtrace_item` is
167
170
# another ResolveBacktraceItem.
168
171
type ResolveBacktraceItem
169
- versionset:: Union{VersionNumber,VersionSet}
170
- why:: Vector
171
- ResolveBacktraceItem () = new (VersionSet (), Any[])
172
- ResolveBacktraceItem (reason, versionset:: VersionSet ) = new (versionset, Any[(versionset,reason)])
173
- ResolveBacktraceItem (reason, version:: VersionNumber ) = new (version, Any[(version,reason)])
172
+ versionreq:: VersionReq
173
+ why:: Vector{WhyReq}
174
+ ResolveBacktraceItem () = new (VersionSet (), WhyReq[])
175
+ ResolveBacktraceItem (reason, versionreq:: VersionReq ) = new (versionreq, WhyReq[(versionreq,reason)])
174
176
end
175
177
176
178
const empty_versionset = VersionSet ([v " 0.0" ,v " 0.0" ])
177
179
178
180
function push! (ritem:: ResolveBacktraceItem , reason, versionset:: VersionSet )
179
- if isa (ritem. versionset , VersionSet)
180
- ritem. versionset = ritem. versionset ∩ versionset
181
- elseif ritem. versionset ∉ versionset
182
- ritem. versionset = empty_versionset
181
+ if isa (ritem. versionreq , VersionSet)
182
+ ritem. versionreq = ritem. versionreq ∩ versionset
183
+ elseif ritem. versionreq ∉ versionset
184
+ ritem. versionreq = empty_versionset
183
185
end
184
186
push! (ritem. why, (versionset,reason))
185
187
end
186
188
187
189
function push! (ritem:: ResolveBacktraceItem , reason, version:: VersionNumber )
188
- if isa (ritem. versionset , VersionSet)
189
- if version ∈ ritem. versionset
190
- ritem. versionset = version
190
+ if isa (ritem. versionreq , VersionSet)
191
+ if version ∈ ritem. versionreq
192
+ ritem. versionreq = version
191
193
else
192
- ritem. versionset = empty_versionset
194
+ ritem. versionreq = empty_versionset
193
195
end
194
- elseif ritem. versionset ≠ version
195
- ritem. versionset = empty_versionset
196
+ elseif ritem. versionreq ≠ version
197
+ ritem. versionreq = empty_versionset
196
198
end
197
199
push! (ritem. why, (version,reason))
198
200
end
@@ -220,14 +222,14 @@ function _show(io::IO, ritem::ResolveBacktraceItem, indent::String, seen::Set{Re
220
222
print (io, " version range $vs " )
221
223
end
222
224
print (io, " required by package $(w[1 ]) , " )
223
- if isa (w[2 ]. versionset , VersionSet)
224
- if ! isempty (w[2 ]. versionset )
225
- println (io, " whose allowed version range is $(w[2 ]. versionset ) :" )
225
+ if isa (w[2 ]. versionreq , VersionSet)
226
+ if ! isempty (w[2 ]. versionreq )
227
+ println (io, " whose allowed version range is $(w[2 ]. versionreq ) :" )
226
228
else
227
229
println (io, " whose allowed version range is empty:" )
228
230
end
229
231
else
230
- println (io, " whose only allowed version is $(w[2 ]. versionset ) :" )
232
+ println (io, " whose only allowed version is $(w[2 ]. versionreq ) :" )
231
233
end
232
234
if w[2 ] ∈ seen
233
235
println (io, (i== l ? " " : " │ " ) * indent, " └─[see above for $(w[1 ]) backtrace]" )
0 commit comments