Browse Source

Make enum member values public

pull/12/head
Patrick Häcker 8 months ago
parent
commit
60de9f7f5f
  1. 6
      src/EnumX.jl
  2. 6
      test/runtests.jl

6
src/EnumX.jl

@ -133,6 +133,12 @@ function enumx(_module_, args) @@ -133,6 +133,12 @@ function enumx(_module_, args)
EnumX.symbol_map(::Base.Type{$(esc(T))}) = $(name_value_map)
end
end
if VERSION >= v"1.11"
push!(
module_block.args,
esc(Expr(:public, values(value_name_map)...))
)
end
for (k, v) in name_value_map
push!(
module_block.args,

6
test/runtests.jl

@ -16,7 +16,7 @@ const Ananab = -1 @@ -16,7 +16,7 @@ const Ananab = -1
@enumx Fruit Apple Banana
@test Fruit isa Module
@test Set(names(Fruit)) == Set([:Fruit])
@test Set(names(Fruit)) == Set([:Fruit, :Apple, :Banana])
@test_broken Set(names(Fruit; all = true)) == Set([:Fruit, :Apple, :Banana, :T])
@test issubset(Set([:Fruit, :Apple, :Banana, :T]), Set(names(Fruit; all = true)))
@test Fruit.T <: EnumX.Enum{Int32} <: Base.Enum{Int32}
@ -48,6 +48,10 @@ const Ananab = -1 @@ -48,6 +48,10 @@ const Ananab = -1
@test_throws ArgumentError("invalid value for Enum Fruit: 123.") Fruit.T(Int32(123))
@test_throws ArgumentError("invalid value for Enum Fruit: 123.") Fruit.T(123)
# Public enum member values (#11)
@test Base.ispublic(Fruit, :Apple)
@test Base.ispublic(Fruit, :Banana)
@test Fruit.Apple < Fruit.Banana
let io = IOBuffer()

Loading…
Cancel
Save