Skip to content

Commit 857af06

Browse files
author
José Valim
committed
Merge pull request #1234 from mururu/deprecate-implicit-args
Implicit super arguments is deprecated
2 parents 8247382 + 9610997 commit 857af06

File tree

5 files changed

+17
-30
lines changed

5 files changed

+17
-30
lines changed

lib/eex/lib/eex/smart_engine.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ defmodule EEx.AssignsEngine do
7676
quote(do: Keyword.get var!(assigns), unquote(name))
7777
end
7878

79-
defp transform(_) do
80-
super
79+
defp transform(arg) do
80+
super(arg)
8181
end
8282

8383
defoverridable [transform: 1]
@@ -94,4 +94,4 @@ defmodule EEx.SmartEngine do
9494
`AssignsEngine` and other conveniences. Read
9595
`EEx.AssignsEngine` for examples.
9696
"""
97-
end
97+
end

lib/elixir/src/elixir_translator.erl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,12 @@ translate_each({ super, Meta, Args } = Original, S) ->
331331
{ _, Arity } = Function,
332332

333333
{ TArgs, TS } = if
334+
is_atom(Args) andalso Arity == 0 ->
335+
elixir_def_overridable:retrieve_args(Meta, Arity, S);
334336
is_atom(Args) ->
337+
elixir_errors:deprecation(Meta, S#elixir_scope.file, "omitting arguments of super is deprecated, please call super with arguments instead"),
335338
elixir_def_overridable:retrieve_args(Meta, Arity, S);
336-
length(Args) == Arity ->
339+
not is_atom(Args) andalso length(Args) == Arity ->
337340
translate_args(Args, S);
338341
true ->
339342
syntax_error(Meta, S#elixir_scope.file, "super must be called with the same number of arguments as the current function")

lib/elixir/test/elixir/gen_server/behaviour_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ defmodule GenServer.BehaviourTest do
1616
{ :stop, :normal, :ok, config }
1717
end
1818

19-
def handle_call(_request, _from, _config) do
20-
super
19+
def handle_call(request, from, config) do
20+
super(request, from, config)
2121
end
2222

2323
def handle_cast({ :push, item }, config) do

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

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ defmodule Kernel.Overridable do
4747
x + y
4848
end
4949

50-
def super_with_implicit_args(x, y) do
51-
x + y
52-
end
53-
5450
def many_clauses(0) do
5551
11
5652
end
@@ -59,7 +55,7 @@ defmodule Kernel.Overridable do
5955
13
6056
end
6157

62-
defoverridable [implicit_nested_super: 0, super_with_implicit_args: 2,
58+
defoverridable [implicit_nested_super: 0,
6359
super_with_explicit_args: 2, many_clauses: 1]
6460

6561
def without_super do
@@ -82,14 +78,6 @@ defmodule Kernel.Overridable do
8278
super x, y * 2
8379
end
8480

85-
def super_with_implicit_args(x, y) do
86-
if true do
87-
x + y + super
88-
else
89-
raise :NEVER
90-
end
91-
end
92-
9381
def many_clauses(2) do
9482
17
9583
end
@@ -98,8 +86,8 @@ defmodule Kernel.Overridable do
9886
super(0) + super(1)
9987
end
10088

101-
def many_clauses(_) do
102-
super
89+
def many_clauses(x) do
90+
super(x)
10391
end
10492
end
10593

@@ -131,10 +119,6 @@ defmodule Kernel.OverridableTest do
131119
assert Overridable.super_with_explicit_args(1, 2) == 5
132120
end
133121

134-
test "calling super with implicit args" do
135-
assert Overridable.super_with_implicit_args(1, 2) == 6
136-
end
137-
138122
test "function without overridable returns false for super?" do
139123
assert Overridable.no_overridable == { :no_overridable, false }
140124
end
@@ -160,4 +144,4 @@ defmodule Kernel.OverridableTest do
160144
"Overridable functions available are: bar/0")
161145
end
162146
end
163-
end
147+
end

lib/ex_unit/lib/ex_unit/cli_formatter.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ defmodule ExUnit.CLIFormatter do
4949
{ :stop, :normal, length(config.test_failures), config }
5050
end
5151

52-
def handle_call(_, _, _) do
53-
super
52+
def handle_call(reqest, from, config) do
53+
super(reqest, from, config)
5454
end
5555

5656
def handle_cast({ :test_finished, test = ExUnit.Test[invalid: true] }, config) do
@@ -78,8 +78,8 @@ defmodule ExUnit.CLIFormatter do
7878
end
7979
end
8080

81-
def handle_cast(_, _) do
82-
super
81+
def handle_cast(request, config) do
82+
super(request, config)
8383
end
8484

8585
defp print_suite(counter, [], [], run_us, load_us) do

0 commit comments

Comments
 (0)