From 0a3f798ea98b125dd95efdc83499aa3bf7b610d7 Mon Sep 17 00:00:00 2001 From: Wojtek Mach <wojtek@wojtekmach.pl> Date: Mon, 29 Jan 2024 11:21:54 +0100 Subject: [PATCH] Default `defimpl` to `@moduledoc false` --- lib/elixir/lib/protocol.ex | 1 + lib/elixir/scripts/elixir_docs.exs | 4 ++++ lib/elixir/test/elixir/protocol_test.exs | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/lib/elixir/lib/protocol.ex b/lib/elixir/lib/protocol.ex index 591d25354a0..30f92a60475 100644 --- a/lib/elixir/lib/protocol.ex +++ b/lib/elixir/lib/protocol.ex @@ -972,6 +972,7 @@ defmodule Protocol do Protocol.__ensure_defimpl__(protocol, for, __ENV__) defmodule name do + @moduledoc false @behaviour protocol @protocol protocol @for for diff --git a/lib/elixir/scripts/elixir_docs.exs b/lib/elixir/scripts/elixir_docs.exs index fd20e730c91..011547e81a9 100644 --- a/lib/elixir/scripts/elixir_docs.exs +++ b/lib/elixir/scripts/elixir_docs.exs @@ -79,6 +79,10 @@ canonical = System.fetch_env!("CANONICAL") skip_undefined_reference_warnings_on: [ "lib/elixir/pages/references/compatibility-and-deprecations.md" ], + skip_code_autolink_to: [ + "Enumerable.List", + "Inspect.MapSet" + ], formatters: ["html", "epub"], groups_for_modules: [ # [Kernel, Kernel.SpecialForms], diff --git a/lib/elixir/test/elixir/protocol_test.exs b/lib/elixir/test/elixir/protocol_test.exs index 9931917bf11..e043f1adbbc 100644 --- a/lib/elixir/test/elixir/protocol_test.exs +++ b/lib/elixir/test/elixir/protocol_test.exs @@ -133,6 +133,20 @@ defmodule ProtocolTest do end ) + write_beam( + defimpl SampleDocsProto, for: List do + def ok(_), do: true + end + ) + + write_beam( + defimpl SampleDocsProto, for: Map do + @moduledoc "for map" + + def ok(_), do: true + end + ) + {:docs_v1, _, _, _, _, _, docs} = Code.fetch_docs(SampleDocsProto) assert {{:type, :t, 0}, _, [], %{"en" => type_doc}, _} = List.keyfind(docs, {:type, :t, 0}, 0) @@ -143,6 +157,10 @@ defmodule ProtocolTest do deprecated = SampleDocsProto.__info__(:deprecated) assert [{{:ok, 1}, "Reason"}] = deprecated + + {:docs_v1, _, _, _, :hidden, _, _} = Code.fetch_docs(SampleDocsProto.List) + {:docs_v1, _, _, _, moduledoc, _, _} = Code.fetch_docs(SampleDocsProto.Map) + assert moduledoc == %{"en" => "for map"} end @compile {:no_warn_undefined, WithAll}