Skip to content

Commit f3d15dc

Browse files
dm3oxinabox
authored andcommitted
Fix MutableBinaryHeap, same issue as #686
1 parent 7663313 commit f3d15dc

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

src/heaps/arrays_as_heaps.jl

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
using Base.Order: Forward, Ordering, lt
44

5+
const DefaultReverseOrdering = Base.ReverseOrdering{Base.ForwardOrdering}
56

67
# Heap operations on flat arrays
78
# ------------------------------

src/heaps/binary_heap.jl

-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ BinaryHeap(ordering::Base.Ordering, xs::AbstractVector{T}) where T = BinaryHeap{
5050
BinaryHeap{T, O}() where {T, O<:Base.Ordering} = BinaryHeap{T}(O())
5151
BinaryHeap{T, O}(xs::AbstractVector) where {T, O<:Base.Ordering} = BinaryHeap{T}(O(), xs)
5252

53-
const DefaultReverseOrdering = Base.ReverseOrdering{Base.ForwardOrdering}
54-
5553
# These constructors needed for BinaryMaxHeap, until we have https://github.com/JuliaLang/julia/pull/37822
5654
BinaryHeap{T, DefaultReverseOrdering}() where {T} = BinaryHeap{T}(Base.Reverse)
5755
BinaryHeap{T, DefaultReverseOrdering}(xs::AbstractVector) where {T} = BinaryHeap{T}(Base.Reverse, xs)

src/heaps/mutable_binary_heap.jl

+5-1
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,13 @@ MutableBinaryHeap(ordering::Base.Ordering, xs::AbstractVector{T}) where T = Muta
179179
MutableBinaryHeap{T, O}() where {T, O<:Base.Ordering} = MutableBinaryHeap{T}(O())
180180
MutableBinaryHeap{T, O}(xs::AbstractVector) where {T, O<:Base.Ordering} = MutableBinaryHeap{T}(O(), xs)
181181

182+
# These constructors needed for BinaryMaxHeap, until we have https://github.com/JuliaLang/julia/pull/37822
183+
MutableBinaryHeap{T, DefaultReverseOrdering}() where {T} = MutableBinaryHeap{T}(Base.Reverse)
184+
MutableBinaryHeap{T, DefaultReverseOrdering}(xs::AbstractVector) where {T} = MutableBinaryHeap{T}(Base.Reverse, xs)
185+
182186
# Forward/reverse ordering type aliases
183187
const MutableBinaryMinHeap{T} = MutableBinaryHeap{T, Base.ForwardOrdering}
184-
const MutableBinaryMaxHeap{T} = MutableBinaryHeap{T, Base.ReverseOrdering}
188+
const MutableBinaryMaxHeap{T} = MutableBinaryHeap{T, DefaultReverseOrdering}
185189

186190
MutableBinaryMinHeap(xs::AbstractVector{T}) where T = MutableBinaryMinHeap{T}(xs)
187191
MutableBinaryMaxHeap(xs::AbstractVector{T}) where T = MutableBinaryMaxHeap{T}(xs)

test/test_mutable_binheap.jl

+6
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ end
7878
@test true
7979
end
8080

81+
@testset "Type Aliases" begin
82+
# https://github.com/JuliaCollections/DataStructures.jl/issues/686
83+
@test MutableBinaryMaxHeap{Int}() isa MutableBinaryMaxHeap{Int}
84+
@test MutableBinaryMinHeap{Int}() isa MutableBinaryMinHeap{Int}
85+
end
86+
8187
@testset "basic tests" begin
8288
h = MutableBinaryMinHeap{Int}()
8389

0 commit comments

Comments
 (0)