Does this help ?
macro maybeasync(asyncflag, expr)
quote
if $(esc(asyncflag))
@async $(esc(expr))
else
$(esc(expr))
end
end
end
function docos(flag)
@maybeasync flag cos(1)
end
julia> docos(true)
Task (done) @0x00007f49b7e4a4a0
julia> docos(false)
0.5403023058681398
EDIT: There’s probably a cheaper way to do it, in terms of code generation.