   defmacro setup(var // quote(do: _), block) do
     quote do
       name = :"__exunit_setup_#{length(@exunit_setup)}"
-      defp name, [unquote(Macro.escape var)], [], unquote(Macro.escape block)
+      defp name, [unquote(escape var)], [], unquote(escape block)
       @exunit_setup [name|@exunit_setup]
     end
   end

  defmacro teardown(var // quote(do: _), block) do
    quote do
      name = :"__exunit_teardown_#{length(@exunit_teardown)}"
      defp name, [unquote(Macro.escape var)], [], unquote(Macro.escape block)
      @exunit_teardown [name|@exunit_teardown]
    end
  end

  def __merge__(mod, _, failure) do
    raise "expected ExUnit callback in #{inspect mod} to return :ok " <>
          " or { :ok, data }, got #{inspect failure} instead"
  end

  defp escape(contents) do
    Macro.escape(contents, escape_unquoted: false)
  end

  defp compile_callbacks(env, kind) do
