Skip to content

Commit

Permalink
Make qlc generate andalso/orelse, not and/or
Browse files Browse the repository at this point in the history
  • Loading branch information
richcarl committed Feb 3, 2025
1 parent ccd4c0f commit 06e7496
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
2 changes: 1 addition & 1 deletion lib/stdlib/src/qlc.erl
Original file line number Diff line number Diff line change
Expand Up @@ -2182,7 +2182,7 @@ join_merge_info(QNum, QInfo, Code, G, ExtraConstants) ->
A = anno0(),
Call = {call,A,{atom,A,element},[{integer,A,Col},EPV]},
F = list2op([{op,A,Op,abstract_term(Con),Call}
|| {Con,Op} <- ConstOps], 'or', A),
|| {Con,Op} <- ConstOps], 'orelse', A),
term_to_binary(F)
end ||
{Col,ConstOps} <- ExtraConstants],
Expand Down
11 changes: 5 additions & 6 deletions lib/stdlib/src/qlc_pt.erl
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,7 @@ join_handle(AP, Anno, [F, H, O, C], Constants) ->
A = anno0(),
G0 = [begin
Call = {call,A,{atom,A,element},[{integer,A,Col},O]},
list2op([{op,A,Op,Con,Call} || {Con,Op} <- Cs], 'or')
list2op([{op,A,Op,Con,Call} || {Con,Op} <- Cs], 'orelse')
end || {Col,Cs} <- Constants],
G = if G0 =:= [] -> G0; true -> [G0] end,
CC1 = {clause,Anno,[AP],G,
Expand Down Expand Up @@ -1711,10 +1711,9 @@ filter1({op, _, Op, L0, R0}, Fs, FS) when Op =:= '=:='; Op =:= '==' ->
F -> [F]
end
end, Fs);
filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'and'; Op =:= 'andalso' ->
filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'andalso' ->
filter1(R, filter1(L, Fs, FS), FS);
filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'or';
Op =:= 'orelse';
filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'orelse';
Op =:= 'xor' ->
filter1(L, Fs, FS) ++ filter1(R, Fs, FS);
filter1({atom,_,Atom}, _Fs, _FS) when Atom =/= true ->
Expand Down Expand Up @@ -1754,9 +1753,9 @@ safe_filter1({op, _, Op, L0, R0}, Fs, FS) when Op =:= '=:='; Op =:= '==' ->
F -> [F]
end
end, Fs);
safe_filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'and'; Op =:= 'andalso' ->
safe_filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'andalso' ->
safe_filter1(R, safe_filter1(L, Fs, FS), FS);
safe_filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'or'; Op =:= 'orelse' ->
safe_filter1({op, _, Op, L, R}, Fs, FS) when Op =:= 'orelse' ->
safe_filter1(L, Fs, FS) ++ safe_filter1(R, Fs, FS);
safe_filter1({atom,_,true}, Fs, _FS) ->
Fs;
Expand Down

0 comments on commit 06e7496

Please sign in to comment.