`isdef`with `quote` seems giving incorrect result
I need to convert a mathematical function in a string into Julia lambda function. Just found the package, it seems very useful.
Just stumbled by a very basic example: expr = :(x -> x + 2) is recognized as a function by isdef, while quote x -> x + 2 end is not recognized.
MWE
julia> expr = quote
x -> x + 2
end
julia> MacroTools.isdef(expr)
false
julia> eval(expr)(3)
5
julia v1.10 MacroTools v0.5.13
Ah, that's slightly awkward. On one hand, we could do striplines here (and/or remove the begin block) and it would work fine. On the other hand, expr is technically a block that contains a function definition; not a function definition.
I would lean towards lining up the behaviour with splitdef. Does splitdef(expr) work?
yes, splitdef works. It correctly identifies the body and args
Then let's fix isdef! Thank you for the bug report. I think it's basically just to remove the block. There's already a function for it in utils.jl IIRC