diff --git a/src/EnumX.jl b/src/EnumX.jl index 22a87d2..ca49ab9 100644 --- a/src/EnumX.jl +++ b/src/EnumX.jl @@ -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, diff --git a/test/runtests.jl b/test/runtests.jl index 5e8a5e7..a935d4f 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -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 @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()