# SPDX-FileCopyrightText: 2019 ash contributors # # SPDX-License-Identifier: MIT defmodule Ash.Error.Exception do @moduledoc "Tooling for creating an Ash exception" defmacro __using__(_) do quote do import Ash.Error.Exception, only: [def_ash_error: 1, def_ash_error: 2] end end defmacro def_ash_error(fields, opts \\ []) do quote location: :keep, generated: true, bind_quoted: [fields: fields, opts: opts] do IO.warn(""" def_ash_error is deprecated. Instead, use `Splode.Error`, and remove any usage of `Ash.ErrorKind`. Place your `message/1` function into the module body as `def message/1`. For example: ```elixir use Splode.Error, fields: #{inspect(fields)}, class: #{inspect(opts[:class])} def message(error) do ...your_message end ``` """) use Splode.Error, fields: fields, class: opts[:class] def message(exception) do Ash.ErrorKind.message(exception) end end end end