Skip to content

Commit e67b286

Browse files
garazdawiwojtekmach
authored andcommitted
Fix source line info for Erlang docs
1 parent 105906c commit e67b286

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

lib/ex_doc/language/elixir.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,8 @@ defmodule ExDoc.Language.Elixir do
513513
nil
514514
end
515515

516-
defp find_function_line(module_data, {name, arity}) do
516+
@doc false
517+
def find_function_line(module_data, {name, arity}) do
517518
Enum.find_value(module_data.private.abst_code, fn
518519
{:function, anno, ^name, ^arity, _} -> anno_line(anno)
519520
_ -> nil

lib/ex_doc/language/erlang.ex

+7-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule ExDoc.Language.Erlang do
33

44
@behaviour ExDoc.Language
55

6+
alias ExDoc.Language.Elixir, as: ExDocElixir
67
alias ExDoc.{Autolink, Refs}
78

89
@impl true
@@ -114,7 +115,7 @@ defmodule ExDoc.Language.Erlang do
114115
end
115116
end,
116117
extra_annotations: [],
117-
line: nil,
118+
line: ExDocElixir.find_function_line(module_data, {name, arity}),
118119
specs: specs
119120
}
120121
end
@@ -126,13 +127,14 @@ defmodule ExDoc.Language.Erlang do
126127
extra_annotations =
127128
if {name, arity} in module_data.private.optional_callbacks, do: ["optional"], else: []
128129

129-
specs =
130+
{specs, anno} =
130131
case Map.fetch(module_data.private.callbacks, {name, arity}) do
131132
{:ok, specs} ->
132-
[{:attribute, 0, :callback, {{name, arity}, specs}}]
133+
{:type, anno, _, _} = hd(specs)
134+
{[{:attribute, anno, :callback, {{name, arity}, specs}}], anno}
133135

134136
:error ->
135-
[]
137+
{[], anno}
136138
end
137139

138140
%{
@@ -147,7 +149,7 @@ defmodule ExDoc.Language.Erlang do
147149
def type_data(entry, module_data) do
148150
{{kind, name, arity}, anno, signature, _doc, _metadata} = entry
149151

150-
case ExDoc.Language.Elixir.type_from_module_data(module_data, name, arity) do
152+
case ExDocElixir.type_from_module_data(module_data, name, arity) do
151153
%{} = map ->
152154
%{
153155
type: map.type,

0 commit comments

Comments
 (0)