Hi, I have a situation that looks a bit like this:
module A
function foo end
end
module B
import A: foo
macro define_foo(typ, value)
:(foo(::$(esc(typ))) = $(esc(value)))
end
end
module C
using B: @define_foo
@define_foo Int 19
end
A.foo(20)
In other words, A is defining a function foo, B defines a macro to define
methods of foo, and C uses the macro. This looks like it should work, but
it doesn't, because hygiene takes over and `foo` gets replaced with a
gensym in its expansion, since it's on the left-hand-side of an equality.
Is there any way around this?