Macro hygiene for macro m(ex...)

Ah now I get it, you’re inserting a Tuple into the AST in @m2, and this doesn’t go through macro hygiene because it is not an Expr or Symbol. You can embed anything you want in the AST in case you didn’t know, but it’s uncommon to do so.

julia> dump(@macroexpand @m1 a, b)
Expr
  head: Symbol tuple
  args: Array{Any}((2,))
    1: GlobalRef
      mod: Module Main
      name: Symbol a
    2: GlobalRef
      mod: Module Main
      name: Symbol b

julia> dump(@macroexpand @m2 a, b)
Tuple{Expr}
  1: Expr
    head: Symbol tuple
    args: Array{Any}((2,))
      1: Symbol a
      2: Symbol b
1 Like