Shouldn't it be if you escaped
julia> module X
macro p(y)
esc(quote
println($y)
end)
end
macro q(y)
quote
println(:($($y)))
end
end
end
X
julia> using X
julia> test = "Hello, world"
"Hello, world"
julia> @X.p(test)
"Hello, world"
julia> @X.q(test)
Hello, world
