I tried the following at https://play.crystal-lang.org/ (0.32.1)
It seems macro_B is not called but rather the text “macro_B {{arg1}}, {{arg2}}” is echoed.
Note: This is just an example and not valid crystal code.
macro macro_B(arg1,arg2)
def example()
x = {{arg1}}({{arg2}})
end
end
macro macro_A(name,arg1,arg2)
def {{name}} : Array({{arg1}})
x = 1
# call macro_B
macro_B {{arg1}}, {{arg2}}
end
{{debug}}
end
macro_A abc, 123, 456
and the output
def abc : Array(123)
x = 1
# call macro_B
macro_B 123, 456
end