thautwarm / MLStyle.jl

Julia functional programming infrastructures and metaprogramming facilities

Home Page:https://thautwarm.github.io/MLStyle.jl/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Work with EnumX and other namespaced properties

jonniediegelman opened this issue · comments

It would be great if @match worked with enums from EnumX and other similar namespaced items.

julia> using EnumX, MLStyle

julia> @enumx Fruit APPLE BANANA PEAR

julia> fruit = Fruit.APPLE
Fruit.APPLE = 0

julia> @match fruit begin
           Fruit.APPLE => 0
           Fruit.BANANA => 1
           Fruit.PEAR => 2
       end
ERROR: LoadError: PatternCompilationError(:(#= REPL[4]:2 =#), ErrorException("unknown pattern syntax :(Fruit.APPLE)"))
Stacktrace:
 [1] gen_match(val::Symbol, tbl::Expr, __source__::LineNumberNode, __module__::Module)
   @ MLStyle.MatchImpl ~/.julia/packages/MLStyle/SLOsr/src/MatchImpl.jl:712
 [2] var"@match"(__source__::LineNumberNode, __module__::Module, val::Any, tbl::Any)
   @ MLStyle.MatchImpl ~/.julia/packages/MLStyle/SLOsr/src/MatchImpl.jl:667
in expression starting at REPL[4]:1

caused by: unknown pattern syntax :(Fruit.APPLE)
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] ex2tf(m::Module, ex::Expr)
   @ MLStyle.MatchImpl ~/.julia/packages/MLStyle/SLOsr/src/MatchImpl.jl:351
 [3] gen_match(val::Symbol, tbl::Expr, __source__::LineNumberNode, __module__::Module)
   @ MLStyle.MatchImpl ~/.julia/packages/MLStyle/SLOsr/src/MatchImpl.jl:710
 [4] var"@match"(__source__::LineNumberNode, __module__::Module, val::Any, tbl::Any)
   @ MLStyle.MatchImpl ~/.julia/packages/MLStyle/SLOsr/src/MatchImpl.jl:667

Possibly if the case is head: Symbol ., could we just evaluate directly?

This is due to the issue discussed at #156