diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e74f2f578..07479ed05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,7 @@ jobs: otp: "27" # Test with latest Elixir and Erlang versions - elixir: "1.19" - otp: "28" + otp: "29" lint: true steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8eec2e690..5a0ed7763 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,15 +29,15 @@ jobs: fail-fast: true matrix: include: - - otp: 26 - otp_version: "26.2.5" - elixir_version: "1.16.2" - otp: 27 otp_version: "27.3.4.9" elixir_version: "1.19.5" - otp: 28 otp_version: "28.4.1" elixir_version: "1.19.5" + - otp: 29 + otp_version: "29.0" + elixir_version: "1.19.5" runs-on: ubuntu-22.04 steps: diff --git a/lib/ex_doc/language/erlang.ex b/lib/ex_doc/language/erlang.ex index 7565960fe..2ad0ff504 100644 --- a/lib/ex_doc/language/erlang.ex +++ b/lib/ex_doc/language/erlang.ex @@ -570,7 +570,7 @@ defmodule ExDoc.Language.Erlang do arity = length(args) cond do - name == :record and acc != [] -> + name == :record and args != [] and acc != [] -> {ast, acc} name in [:"::", :when, :%{}, :{}, :|, :->, :..., :fun] -> diff --git a/test/ex_doc/language/erlang_test.exs b/test/ex_doc/language/erlang_test.exs index a6caf2531..918ed2e7a 100644 --- a/test/ex_doc/language/erlang_test.exs +++ b/test/ex_doc/language/erlang_test.exs @@ -708,6 +708,13 @@ defmodule ExDoc.Language.ErlangTest do ~s| atom()}]].| end + if System.otp_release() >= "29" do + test "spec referencing builtin record/0 type", c do + assert autolink_spec("-spec foo() -> record().", c) == + ~s|foo() -> record().| + end + end + test "callback", c do assert autolink_spec("-callback foo() -> t().", c) == ~s|foo() -> t().|