summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2018-07-10 14:02:41 +0200
committerJosé Valim <jose.valim@plataformatec.com.br>2018-07-10 14:02:41 +0200
commitbed2547895874cd4f646c25d39ba986710144067 (patch)
tree6a63a894e8207cc45ec361834729870c473fc82d
parentc519d7bec8b11c14e7f6c038a772bfd7cbf9ca95 (diff)
downloadelixir-bed2547895874cd4f646c25d39ba986710144067.tar.gz
Properly inflect names for structs
-rw-r--r--lib/elixir/src/elixir_erl.erl2
-rw-r--r--lib/elixir/test/elixir/kernel/docs_test.exs10
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/elixir/src/elixir_erl.erl b/lib/elixir/src/elixir_erl.erl
index 5788714f8..ce45fb072 100644
--- a/lib/elixir/src/elixir_erl.erl
+++ b/lib/elixir/src/elixir_erl.erl
@@ -591,7 +591,7 @@ signature_to_binary(_Module, Name, _Signature)
signature_to_binary(_Module, '%', _) ->
<<"%struct{}">>;
-signature_to_binary(Module, '__struct__', 0) ->
+signature_to_binary(Module, '__struct__', []) ->
<<"%", ('Elixir.Kernel':inspect(Module))/binary, "{}">>;
signature_to_binary(_, Name, Signature) ->
diff --git a/lib/elixir/test/elixir/kernel/docs_test.exs b/lib/elixir/test/elixir/kernel/docs_test.exs
index 1618097a2..dfa7a6713 100644
--- a/lib/elixir/test/elixir/kernel/docs_test.exs
+++ b/lib/elixir/test/elixir/kernel/docs_test.exs
@@ -143,6 +143,9 @@ defmodule Kernel.DocsTest do
defmodule SampleDocs do
@moduledoc "Module doc"
+ @doc "My struct"
+ defstruct [:sample]
+
@typedoc "Type doc"
@since "1.2.3"
@type foo(any) :: any
@@ -200,6 +203,8 @@ defmodule Kernel.DocsTest do
callback_bar,
callback_baz,
callback_foo,
+ function_struct_0,
+ function_struct_1,
function_bar,
function_baz,
function_foo,
@@ -216,6 +221,11 @@ defmodule Kernel.DocsTest do
assert {{:callback, :foo, 1}, _, [], %{"en" => "Callback doc"},
%{since: "1.2.3", deprecated: "use baz/2 instead"}} = callback_foo
+ assert {{:function, :__struct__, 0}, _, ["%Kernel.DocsTest.SampleDocs{}"],
+ %{"en" => "My struct"}, %{}} = function_struct_0
+
+ assert {{:function, :__struct__, 1}, _, ["__struct__(kv)"], :none, %{}} = function_struct_1
+
assert {{:function, :bar, 1}, _, ["bar(arg)"], %{"en" => "Multiple bodiless clause doc"},
%{since: "1.2.3"}} = function_bar