aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-02-14 13:02:26 +0100
committerBjörn Gustavsson <[email protected]>2014-02-17 13:31:19 +0100
commitcf72119ea1b76a8650503a8ca2b1e025e9c7b700 (patch)
treeff7921a776736c2b97b8b45bbf6c74db2e32f915
parent1d4affb9f61f7ea832c534f57d50872d5a1d3376 (diff)
downloadotp-cf72119ea1b76a8650503a8ca2b1e025e9c7b700.tar.gz
otp-cf72119ea1b76a8650503a8ca2b1e025e9c7b700.tar.bz2
otp-cf72119ea1b76a8650503a8ca2b1e025e9c7b700.zip
Correct parenthesis expansion
Commit dfb4ec804a099b539c91e5643090d8183885e71c attempted to add a closing parenthesis to the expansion of a funtion of zero arity if there were no other functions with the same name. Unfortunately it would add the closing parenthesis in many cases when there was another function with another name (e.g. to Mod:module_info/0 even though there is a Mod:module_info/1). Correct logic for adding parenthesis and add a test case.
-rw-r--r--lib/stdlib/src/edlin_expand.erl14
-rw-r--r--lib/stdlib/test/edlin_expand_SUITE.erl4
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/stdlib/src/edlin_expand.erl b/lib/stdlib/src/edlin_expand.erl
index 0033010dce..a2b4663219 100644
--- a/lib/stdlib/src/edlin_expand.erl
+++ b/lib/stdlib/src/edlin_expand.erl
@@ -73,7 +73,7 @@ to_atom(Str) ->
error
end.
-match(Prefix, Alts, Extra) ->
+match(Prefix, Alts, Extra0) ->
Len = length(Prefix),
Matches = lists:sort(
[{S, A} || {H, A} <- Alts,
@@ -89,13 +89,11 @@ match(Prefix, Alts, Extra) ->
{yes, Remain, []}
end;
{complete, Str} ->
- {_, Arity} = lists:keyfind(Str, 1, Matches),
- case {Arity, Extra} of
- {0, "("} ->
- {yes, nthtail(Len, Str) ++ "()", []};
- _ ->
- {yes, nthtail(Len, Str) ++ Extra, []}
- end;
+ Extra = case {Extra0,Matches} of
+ {"(",[{Str,0}]} -> "()";
+ {_,_} -> Extra0
+ end,
+ {yes, nthtail(Len, Str) ++ Extra, []};
no ->
{no, [], []}
end.
diff --git a/lib/stdlib/test/edlin_expand_SUITE.erl b/lib/stdlib/test/edlin_expand_SUITE.erl
index 8709d18414..43c980e994 100644
--- a/lib/stdlib/test/edlin_expand_SUITE.erl
+++ b/lib/stdlib/test/edlin_expand_SUITE.erl
@@ -114,6 +114,10 @@ quoted_fun(Config) when is_list(Config) ->
[{"'Quoted_fun_name'",0},
{"'Quoted_fun_too'",0}]} = do_expand("expand_test1:'Quoted_fun_"),
{yes,"weird-fun-name'(",[]} = do_expand("expand_test1:'#"),
+
+ %% Since there is a module_info/1 as well as a module_info/0
+ %% there should not be a closing parenthesis added.
+ {yes,"(",[]} = do_expand("expand_test:module_info"),
ok.
quoted_module(doc) ->