 callMacroCompile = (ctx, call) ->
   op = _operator call
   op.label = 'keyword'
-  expanded = ctx.macros()[op.symbol] ctx, call
+  macro = ctx.macros()[op.symbol]
+  op.id = macro.id
+  expanded = macro ctx, call
   if isTranslated expanded
     expanded
   else

    compiledMacro = translateToJs translateIr ctx,
        (termCompile ctx, call_ (token_ 'fn'), (join [paramTuple], rest))
    macroFn = eval compiledMacro
    ctx.addMacro macroName, (ctx, call) ->
      # operatorCompile ctx, call
      # args = termsCompile ctx, (_arguments call)[0..macroFn.length]
      #callTyping ctx, call

    @_macros

  addMacro: (name, macro) ->
    @_macros[name.symbol] = macro
    name.id = macro.id = @freshId()

  definePattern: (pattern) ->
    if @isDefining()
