diff options
author | Björn Gustavsson <[email protected]> | 2015-04-08 07:10:01 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2015-04-30 13:14:26 +0200 |
commit | e8410b695f6bc431a7d16297ca31eb3c8368edf1 (patch) | |
tree | 9b1bf0ffc182b6a17f65841dccad97dafaa8f08d /lib/debugger | |
parent | e76849def1ea65ef4a231c04baaec04431fa081b (diff) | |
download | otp-e8410b695f6bc431a7d16297ca31eb3c8368edf1.tar.gz otp-e8410b695f6bc431a7d16297ca31eb3c8368edf1.tar.bz2 otp-e8410b695f6bc431a7d16297ca31eb3c8368edf1.zip |
dbg_iload: Correct translation of generators
The pattern in the generator for a list or binary comprehension
was processed as an expression instead of as a pattern. That
happened to work because expressions and patterns were translated
in the same way.
In the future we might want to process expressions and patterns
differently.
Diffstat (limited to 'lib/debugger')
-rw-r--r-- | lib/debugger/src/dbg_iload.erl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/debugger/src/dbg_iload.erl b/lib/debugger/src/dbg_iload.erl index f1a85e8e71..d47d412893 100644 --- a/lib/debugger/src/dbg_iload.erl +++ b/lib/debugger/src/dbg_iload.erl @@ -457,9 +457,9 @@ expr({'try',Anno,Es0,CaseCs0,CatchCs0,As0}, Lc) -> {'try',ln(Anno),Es,CaseCs,CatchCs,As}; expr({lc,Anno,E0,Gs0}, _Lc) -> %R8. Gs = lists:map(fun ({generate,L,P0,Qs}) -> - {generate,L,expr(P0, false),expr(Qs, false)}; + {generate,L,pattern(P0),expr(Qs, false)}; ({b_generate,L,P0,Qs}) -> %R12. - {b_generate,L,expr(P0, false),expr(Qs, false)}; + {b_generate,L,pattern(P0),expr(Qs, false)}; (Expr) -> case erl_lint:is_guard_test(Expr) of true -> {guard,guard([[Expr]])}; @@ -469,9 +469,9 @@ expr({lc,Anno,E0,Gs0}, _Lc) -> %R8. {lc,ln(Anno),expr(E0, false),Gs}; expr({bc,Anno,E0,Gs0}, _Lc) -> %R12. Gs = lists:map(fun ({generate,L,P0,Qs}) -> - {generate,L,expr(P0, false),expr(Qs, false)}; + {generate,L,pattern(P0),expr(Qs, false)}; ({b_generate,L,P0,Qs}) -> %R12. - {b_generate,L,expr(P0, false),expr(Qs, false)}; + {b_generate,L,pattern(P0),expr(Qs, false)}; (Expr) -> case erl_lint:is_guard_test(Expr) of true -> {guard,guard([[Expr]])}; |