diff options
author | Michał Łępicki <michallepicki@users.noreply.github.com> | 2021-12-01 09:56:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-01 09:56:54 +0100 |
commit | 0ff6522ab4216134da60bdcfa647688334d1cce8 (patch) | |
tree | b047671719827a461b5e274fe24ee6f7d62583b3 | |
parent | 31dd59dbd1dcc5af86823efcf232980769cb37d1 (diff) | |
download | elixir-0ff6522ab4216134da60bdcfa647688334d1cce8.tar.gz |
Fix opaque Version.Requirement usage (#11428)
Do not pattern match on internal opaque type structure
outside of the module with that opaque type definition.
Fixes related dialyzer issues.
-rw-r--r-- | lib/elixir/lib/version.ex | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/elixir/lib/version.ex b/lib/elixir/lib/version.ex index c43fe02fd..fc990e9a1 100644 --- a/lib/elixir/lib/version.ex +++ b/lib/elixir/lib/version.ex @@ -140,6 +140,12 @@ defmodule Version do end @doc false + @spec compile_requirement(t) :: t + def compile_requirement(%Requirement{} = requirement) do + requirement + end + + @doc false @spec match?(t, tuple) :: boolean def match?(%__MODULE__{lexed: [operator, req | rest]}, version) do match_lexed?(rest, version, match_op?(operator, req, version)) @@ -440,9 +446,7 @@ defmodule Version do The internal representation is opaque. """ @spec compile_requirement(Requirement.t()) :: Requirement.t() - def compile_requirement(%Requirement{} = requirement) do - requirement - end + defdelegate compile_requirement(requirement), to: Requirement defp to_matchable(%Version{major: major, minor: minor, patch: patch, pre: pre}, allow_pre?) do {major, minor, patch, pre, allow_pre?} |