From 3b1fe3d0187a3067df8b94d3ab94082e4c746257 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Tue, 15 Mar 2022 12:30:53 +0100 Subject: [PATCH] Use Meta.isexpr. --- src/EnumX.jl | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/EnumX.jl b/src/EnumX.jl index a802467..1d73b4b 100644 --- a/src/EnumX.jl +++ b/src/EnumX.jl @@ -16,9 +16,8 @@ function symbol_map end function enumx(_module_, args) T = :T - if length(args) > 1 && args[1] isa Expr && args[1].head === :(=) && - length(args[1].args) == 2 && args[1].args[1] === :T && - (args[1].args[2] isa Symbol || args[1].args[2] isa QuoteNode) + if length(args) > 1 && Meta.isexpr(args[1], :(=), 2) && args[1].args[1] === :T && + (args[1].args[2] isa Symbol || args[1].args[2] isa QuoteNode) T = args[1].args[2] T isa QuoteNode && (T = T.value) popfirst!(args) # drop T=... @@ -27,15 +26,14 @@ function enumx(_module_, args) if name isa Symbol modname = name baseT = Int32 - elseif name isa Expr && name.head == :(::) && name.args[1] isa Symbol && - length(name.args) == 2 + elseif Meta.isexpr(name, :(::), 2) && name.args[1] isa Symbol modname = name.args[1] baseT = Core.eval(_module_, name.args[2]) else panic("invalid EnumX.@enumx type specification: $(name).") end name = modname - if length(args) == 1 && args[1] isa Expr && args[1].head === :block + if length(args) == 1 && Meta.isexpr(args[1], :block) syms = args[1].args else syms = args @@ -50,7 +48,7 @@ function enumx(_module_, args) panic("value overflow for Enum $(modname): $(modname).$(s) = $(next).") end sym = s - elseif s isa Expr && s.head === :(=) && s.args[1] isa Symbol && length(s.args) == 2 + elseif Meta.isexpr(s, :(=), 2) && s.args[1] isa Symbol if s.args[2] isa Symbol && (i = findfirst(x -> x.first === s.args[2], name_value_map); i !== nothing) @assert name_value_map[i].first === s.args[2]