From 7fa36d5651547425c6f6cb3dbe84ba38d8865972 Mon Sep 17 00:00:00 2001 From: Wojtek Mach Date: Tue, 15 Feb 2022 10:26:34 +0100 Subject: [PATCH] Add `:otp_eep48` and `:otp_has_docs` tags (#1516) --- lib/ex_doc/language/elixir.ex | 9 ++++++--- test/ex_doc/formatter/html/erlang_test.exs | 2 +- test/ex_doc/language/elixir_test.exs | 7 ++++++- test/ex_doc/language/erlang_test.exs | 2 +- test/ex_doc/retriever/erlang_test.exs | 2 +- test/test_helper.exs | 7 +++++-- 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/ex_doc/language/elixir.ex b/lib/ex_doc/language/elixir.ex index f34487e92..c50f39343 100644 --- a/lib/ex_doc/language/elixir.ex +++ b/lib/ex_doc/language/elixir.ex @@ -627,9 +627,12 @@ defmodule ExDoc.Language.Elixir do defp parse_function("__block__"), do: {:function, :__block__} defp parse_function(string) do - case Code.string_to_quoted(string <> "/0") do - {:ok, {:/, _, [{function, _, _}, 0]}} when is_atom(function) -> {:function, function} - _ -> :error + case Code.string_to_quoted("& #{string}/0") do + {:ok, {:&, _, [{:/, _, [{function, _, _}, 0]}]}} when is_atom(function) -> + {:function, function} + + _ -> + :error end end diff --git a/test/ex_doc/formatter/html/erlang_test.exs b/test/ex_doc/formatter/html/erlang_test.exs index 65ce16180..79818c8cc 100644 --- a/test/ex_doc/formatter/html/erlang_test.exs +++ b/test/ex_doc/formatter/html/erlang_test.exs @@ -2,7 +2,7 @@ defmodule ExDoc.Formatter.HTML.ErlangTest do use ExUnit.Case import TestHelper - @moduletag :otp24 + @moduletag :otp_eep48 @moduletag :tmp_dir test "it works", c do diff --git a/test/ex_doc/language/elixir_test.exs b/test/ex_doc/language/elixir_test.exs index f06b096a0..cc44c3484 100644 --- a/test/ex_doc/language/elixir_test.exs +++ b/test/ex_doc/language/elixir_test.exs @@ -97,17 +97,22 @@ defmodule ExDoc.Language.ElixirTest do assert_unchanged("bar/1", current_module: AutolinkTest.Foo) end - @tag :otp24 test "auto-imported function" do assert autolink_doc("+/2") == ~m"[`+/2`](https://hexdocs.pm/elixir/Kernel.html#+/2)" + assert autolink_doc("&/1") == + ~m"[`&/1`](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#&/1)" + assert autolink_doc("for/1") == ~m"[`for/1`](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#for/1)" assert autolink_doc("for/1", apps: [:elixir]) == ~m"[`for/1`](Kernel.SpecialForms.html#for/1)" + end + @tag skip: not Version.match?(System.version(), "~> 1.13") + test "stepped range" do assert autolink_doc("..///3") == ~m"[`..///3`](https://hexdocs.pm/elixir/Kernel.html#..///3)" end diff --git a/test/ex_doc/language/erlang_test.exs b/test/ex_doc/language/erlang_test.exs index fef344ae4..82e8d1aa6 100644 --- a/test/ex_doc/language/erlang_test.exs +++ b/test/ex_doc/language/erlang_test.exs @@ -2,7 +2,7 @@ defmodule ExDoc.Language.ErlangTest do use ExUnit.Case import TestHelper - @moduletag :otp24 + @moduletag :otp_has_docs @moduletag :tmp_dir describe "autolink_doc/2" do diff --git a/test/ex_doc/retriever/erlang_test.exs b/test/ex_doc/retriever/erlang_test.exs index 00224d30d..db29a0f68 100644 --- a/test/ex_doc/retriever/erlang_test.exs +++ b/test/ex_doc/retriever/erlang_test.exs @@ -3,7 +3,7 @@ defmodule ExDoc.Retriever.ErlangTest do alias ExDoc.{Retriever, DocAST, Language.Erlang} import TestHelper - @moduletag :otp24 + @moduletag :otp_eep48 @moduletag :tmp_dir describe "docs_from_modules/2" do diff --git a/test/test_helper.exs b/test/test_helper.exs index bc25221fa..30d955a87 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,6 +1,9 @@ +otp_eep48? = Code.ensure_loaded?(:edoc_doclet_chunks) + exclude = [ earmark: not ExDoc.Markdown.Earmark.available?(), - otp24: System.otp_release() < "24" + otp_eep48: not otp_eep48?, + otp_has_docs: not match?({:docs_v1, _, _, _, _, _, _}, Code.fetch_docs(:array)) ] ExUnit.start(exclude: Enum.filter(exclude, &elem(&1, 1))) @@ -71,7 +74,7 @@ defmodule TestHelper do :ok end - if Code.ensure_loaded?(:edoc_doclet_chunks) do + if otp_eep48? do def edoc_to_chunk(module) do source_path = module.module_info(:compile)[:source] dir = :filename.dirname(source_path)