TomHale

TomHale

How do I overload @doc strings?

I’m trying to work around the following warning:

warning: redefining @doc attribute previously set at line 78.

Please remove the duplicate docs. If instead you want to override a previously defined @doc, attach the @doc attribute to a function head (the function signature not followed by any do-block). For example:

    @doc """
    new docs
    """
    def get_futures_instruments(...)

I’ve tried to implement this advice, but can’t seem to work it out. What I’m doing is:

  @doc """
  Get all instruments, optionally filtered by underlying instrument(s)
  *** This is the main doc string that I'm trying to override below. ***
  """
  def get_futures_instruments(filter \\ nil)

  @doc "Get all instruments whose names start with the given `filter_str`"
  @spec get_futures_instruments(String.t() | nil) :: {:ok, list(map)} | error_response()
  def get_futures_instruments(filter_str) when is_binary(filter_str) or is_nil(filter_str) do
    ...
  end

  @doc "Get all instruments whose names start with any of those given in `filter_list`"
  @spec get_futures_instruments(list(String.t())) :: {:ok, list(map)} | error_response()
  def get_futures_instruments(filter_list) when is_list(filter_list) do
   ...
  end

Most Liked

APB9785

APB9785

Creator of ECSx

I think what the warning is getting at, is that all your docs should be above

def get_futures_instruments(filter \\ nil)

Checking the docs for the docs (Writing Documentation — Elixir v1.12.3), it says:

  • Place documentation before the first clause of multi-clause functions. Documentation is always per function and arity and not per clause.

It seems like what you’re trying to do in the OP goes against this rule.

Nicd

Nicd

Perhaps if a macro has written a @doc for you, then you might end up with two @doc.

Where Next?

Popular in Questions Top

Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

Other popular topics Top

hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31525 112
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

We're in Beta

About us Mission Statement