未使用的宏,编译器警告

时间:2018-12-18 09:51:00

标签: elixir ecto

我在编译器中遇到了奇怪的问题-尽管我在同一模块中调用它,但它声称我的宏未使用。它可能与在where语句中使用它有关,但是最后我认为这应该不是问题。大家有什么想法吗? ;)

defmodule Module do 
  defmacrop coalesce(left, right) do
    quote do
      fragment("COALESCE(?, ?)", unquote(left), unquote(right))
    end
  end

  def remove(timestamp \\ Timex.now) do
    Schema
    |> where([p], coalesce(p.time, ^timestamp) < ^timestamp)
    |> Repo.delete_all(returning: select_all(Schema))
  end
end

1 个答案:

答案 0 :(得分:2)

那是因为您没有使用定义的宏。您正在使用Ecto.Query.API.coalesce