diff options
author | Péter Gömöri <[email protected]> | 2016-10-13 23:02:37 +0200 |
---|---|---|
committer | Péter Gömöri <[email protected]> | 2016-10-13 23:12:32 +0200 |
commit | 8db6c68b2d748e4a72445959f205d8d6c4dd18ed (patch) | |
tree | 4788407e98b6f886af1cbc720612ffbd4ce16851 | |
parent | 9c013e2f9f7e32de38dc9640038aee1840d68e04 (diff) | |
download | otp-8db6c68b2d748e4a72445959f205d8d6c4dd18ed.tar.gz otp-8db6c68b2d748e4a72445959f205d8d6c4dd18ed.tar.bz2 otp-8db6c68b2d748e4a72445959f205d8d6c4dd18ed.zip |
dbg:fun2ms: allow empty list as head
Running 'dbg:fun2ms(fun([]) -> return_trace() end' resulted in an error
"dbg:fun2ms requires fun with single variable or list parameter"
But the empty list is actually a list and it is a valid value as a
match-spec head (matching on arity-0 functions).
Although its practical use is questionable this commit eliminates a
small limitation of ms_transform which is not present in the match-spec
grammar.
-rw-r--r-- | lib/stdlib/src/ms_transform.erl | 2 | ||||
-rw-r--r-- | lib/stdlib/test/ms_transform_SUITE.erl | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/stdlib/src/ms_transform.erl b/lib/stdlib/src/ms_transform.erl index c0eea652e7..98745b13f3 100644 --- a/lib/stdlib/src/ms_transform.erl +++ b/lib/stdlib/src/ms_transform.erl @@ -451,6 +451,8 @@ check_type(_,[{record,_,_,_}],ets) -> ok; check_type(_,[{cons,_,_,_}],dbg) -> ok; +check_type(_,[{nil,_}],dbg) -> + ok; check_type(Line0,[{match,_,{var,_,_},X}],Any) -> check_type(Line0,[X],Any); check_type(Line0,[{match,_,X,{var,_,_}}],Any) -> diff --git a/lib/stdlib/test/ms_transform_SUITE.erl b/lib/stdlib/test/ms_transform_SUITE.erl index 1c5faa960b..f35013b1b2 100644 --- a/lib/stdlib/test/ms_transform_SUITE.erl +++ b/lib/stdlib/test/ms_transform_SUITE.erl @@ -296,6 +296,8 @@ basic_dbg(Config) when is_list(Config) -> compile_and_run(<<"dbg:fun2ms(fun([A,B]) -> bindings() end)">>), [{['$1','$2'],[],['$_']}] = compile_and_run(<<"dbg:fun2ms(fun([A,B]) -> object() end)">>), + [{[],[],[{return_trace}]}] = + compile_and_run(<<"dbg:fun2ms(fun([]) -> return_trace() end)">>), ok. %% Test calling of ets/dbg:fun2ms from the shell. |