diff --git a/lib/ex_doc/retriever.ex b/lib/ex_doc/retriever.ex index 593d18b0f..096f7c9f7 100644 --- a/lib/ex_doc/retriever.ex +++ b/lib/ex_doc/retriever.ex @@ -88,8 +88,9 @@ defmodule ExDoc.Retriever do if type == :behaviour do callbacks = Kernel.Typespec.beam_callbacks(module) - docs = Enum.map(module.__behaviour__(:docs), - get_callback(&1, source_path, source_url, callbacks)) ++ docs + callback_docs = Enum.map(module.__behaviour__(:docs), + get_callback(&1, source_path, source_url, callbacks)) + docs = docs ++ Enum.reverse(callback_docs) end ExDoc.ModuleNode[ diff --git a/test/exdoc/retriever_test.exs b/test/exdoc/retriever_test.exs index 7d2b7d7a9..6e3d7ae64 100644 --- a/test/exdoc/retriever_test.exs +++ b/test/exdoc/retriever_test.exs @@ -117,7 +117,7 @@ defmodule ExDoc.RetrieverTest do test "ignore behaviours internal functions" do [node] = get_docs :modules, ["CustomBehaviour"] functions = Enum.map node.docs, fn(doc) -> doc.id end - assert functions == ["hello/1"] + assert functions == ["first/1", "hello/1","last/1"] assert hd(node.docs).type == :defcallback assert hd(node.docs).signature == [{ :integer, [line: 7], [] }] end diff --git a/test/fixtures/behaviour.ex b/test/fixtures/behaviour.ex index bba34a660..4aec7494f 100644 --- a/test/fixtures/behaviour.ex +++ b/test/fixtures/behaviour.ex @@ -1,8 +1,18 @@ defmodule CustomBehaviour do use Behaviour + @doc """ + I should be first. + """ + defcallback first(integer) :: integer + @doc """ This is a sample callback. """ defcallback hello(integer) :: integer -end \ No newline at end of file + + @doc """ + I should be last. + """ + defcallback last(integer) :: integer +end