Skip to content

Commit 1b0dff7

Browse files
committed
Do not warn on defaults from defoverridable, closes #15061
1 parent 0862491 commit 1b0dff7

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

lib/elixir/lib/module/types.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ defmodule Module.Types do
178178
default = Keyword.get(meta, :defaults, 0)
179179

180180
cond do
181-
Keyword.get(meta, :context) != nil ->
181+
Keyword.get(meta, :context) != nil or Keyword.get(meta, :from_super) == true ->
182182
:ok
183183

184184
default == 0 ->

lib/elixir/test/elixir/kernel/overridable_test.exs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,18 @@ defmodule Kernel.Overridable do
159159
def private_macro_call(val \\ 11) do
160160
private_macro(val)
161161
end
162+
163+
## Defaults
164+
165+
def with_default(a, b \\ 1) do
166+
a + b
167+
end
168+
169+
defoverridable with_default: 2
170+
171+
def with_default(a, b) do
172+
super(a + b, a + b)
173+
end
162174
end
163175

164176
defmodule Kernel.OverridableExampleBehaviour do
@@ -171,7 +183,7 @@ end
171183

172184
defmodule Kernel.OverridableTest do
173185
require Kernel.Overridable, as: Overridable
174-
use ExUnit.Case
186+
use ExUnit.Case, async: true
175187

176188
defp purge(module) do
177189
:code.purge(module)
@@ -286,6 +298,11 @@ defmodule Kernel.OverridableTest do
286298
assert Overridable.multiple_overrides() == [3, 2, 1]
287299
end
288300

301+
test "with defaults" do
302+
assert Overridable.with_default(5) == 12
303+
assert Overridable.with_default(5, 2) == 14
304+
end
305+
289306
test "overridable macros" do
290307
a = 11
291308
assert Overridable.overridable_macro(a) == 1111

0 commit comments

Comments
 (0)