[erlang-patches] EEP37: Funs with names

Björn Gustavsson <>
Thu Nov 28 13:44:43 CET 2013


On Wed, Nov 14, 2012 at 5:42 PM, Anthony Ramine <> wrote:

> This patch implements EEP37: Funs with names
>
>
It is now much closer to being graduated.

I have added the branch to our daily builds for the master branch.

I would like a comment from Kostis about the Dialyzer changes.

What also remains is coverage in test suites. I have fixed a few,
but xref_SUITE remains to be fixed (a named fun with the '_' name
should be tested).

Here are my fixes for the test suites (also included as an attachment
to make it easier to apply):

diff --git a/lib/compiler/test/fun_SUITE.erl
b/lib/compiler/test/fun_SUITE.erl
index 0ff846e..e35692e 100644
--- a/lib/compiler/test/fun_SUITE.erl
+++ b/lib/compiler/test/fun_SUITE.erl
@@ -197,10 +197,14 @@ external(Config) when is_list(Config) ->
 call_me(I) ->
     {ok,I}.

-id(I) ->
-    I.
-
 eep37(Config) when is_list(Config) ->
     F = fun Fact(N) when N > 0 -> N * Fact(N - 1); Fact(0) -> 1 end,
+    Add = fun _(N) -> N + 1 end,
+    UnusedName = fun BlackAdder(N) -> N + 42 end,
     720 = F(6),
+    10 = Add(9),
+    50 = UnusedName(8),
     ok.
+
+id(I) ->
+    I.
diff --git a/lib/debugger/test/fun_SUITE.erl
b/lib/debugger/test/fun_SUITE.erl
index 569af6c..75e3b55 100644
--- a/lib/debugger/test/fun_SUITE.erl
+++ b/lib/debugger/test/fun_SUITE.erl
@@ -288,10 +288,14 @@ external(Config) when is_list(Config) ->
 call_me(I) ->
     {ok,I}.

-id(I) ->
-    I.
-
 eep37(Config) when is_list(Config) ->
     F = fun Fact(N) when N > 0 -> N * Fact(N - 1); Fact(0) -> 1 end,
+    Add = fun _(N) -> N + 1 end,
+    UnusedName = fun BlackAdder(N) -> N + 42 end,
     720 = F(6),
+    10 = Add(9),
+    50 = UnusedName(8),
     ok.
+
+id(I) ->
+    I.
diff --git a/lib/stdlib/test/erl_lint_SUITE.erl
b/lib/stdlib/test/erl_lint_SUITE.erl
index ea90793..ad51bfa 100644
--- a/lib/stdlib/test/erl_lint_SUITE.erl
+++ b/lib/stdlib/test/erl_lint_SUITE.erl
@@ -644,7 +644,9 @@ unused_vars_warn_fun(Config) when is_list(Config) ->
               u() ->
                   fun U(U) -> foo end; % U shadowed. U unused.
               u() ->
-                  fun U(1) -> U; U(U) -> foo end. % U shadowed. U unused.
+                  fun U(1) -> U; U(U) -> foo end; % U shadowed. U unused.
+              u() ->
+                  fun _(N) -> N + 1 end.  % Cover handling of '_' name.
            ">>,
            [warn_unused_vars],
            {error,[{3,erl_lint,{unbound_var,'U'}}],


id/1 is a common help function, so I want it to remain at the end
of the file.

/Bjorn

-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20131128/1d0eca39/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fixup-Test-named-funs.patch
Type: text/x-patch
Size: 2323 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20131128/1d0eca39/attachment.bin>


More information about the erlang-patches mailing list