 
 labelDocs = (source, params) ->
   ast = (astizeList source)[1...-1]
-  labelUsedParams ast, params
+  labelUsedParams ast, params if params
   # Strip labels at the top of docs, since those are words
   for word in ast when not ((isForm word) or (word.label is 'param'))
     word.label = null

callMacroExpand = (ctx, call) ->
  op = _operator call
  op.label = 'keyword'
  macro = ctx.macro op.symbol
  op.id = macro.id
  macro ctx, call

    macroFn = eval compiledMacro
    if macroFn
      ctx.declareMacro ctx.definitionPattern(), (ctx, call) ->
        operatorCompile ctx, call if typed
        if splatted
          constantToSource macroFn Immutable.List (_arguments call)
        else
          constantToSource macroFn (_arguments call)...
      , extractDocs docs
    else
      malformed ctx, ctx.definitionPattern(), 'Macro failed to compile'

  if typed
    params = (map token_, map _symbol, _terms paramTuple)
    fn_ params, concat [[maybeType], docs, [call_ (token_ macroName), params]]
  else
    jsNoop()

ms['`'] = ms_quote = (ctx, call) ->
