ms_transform.erl doesn't handle packages
Ulf Wiger (TN/EAB)
ulf.wiger@REDACTED
Mon Jul 24 16:39:30 CEST 2006
The same goes for QLC. Here's a patch for qlc_pt.erl
*** /vobs/otp/otp_delivery/solaris8_sparc/lib/stdlib-1.14/src/qlc_pt.erl
Tue May 23 16:03:41 2006
--- qlc_pt.erl Mon Jul 24 16:28:29 2006
***************
*** 35,40 ****
--- 35,43 ----
%% Also in qlc.erl.
-define(QLC_Q(L1, L2, L3, L4, LC, Os),
{call,L1,{remote,L2,{atom,L3,?APIMOD},{atom,L4,?Q}},[LC |
Os]}).
+ -define(QLC_QQ(L1, L2, L3, L4, L5, L6, LC, Os),
+ {call,L1,{remote,L2,{record_field,L3,{atom,L4,''},
+ {atom,L5,?APIMOD}},{atom,L6,?Q}},[LC |
Os]}).
-define(IMP_Q(L1, L2, LC, Os), {call,L,{atom,L2,?Q},[LC | Os]}).
%% Also in qlc.erl.
***************
*** 1208,1213 ****
--- 1211,1223 ----
NL = make_lcid(L1, No),
{T, A} = F(NL, LC, A2),
{?QLC_Q(L1, L2, L3, L4, T, Os), A, No + 1};
+ qlcmf(?QLC_QQ(L1, L2, L3, L4, L5, L6, LC0, Os0),
+ F, Imp, A0, No0) when length(Os0) < 2 ->
+ {Os, A1, No1} = qlcmf(Os0, F, Imp, A0, No0),
+ {LC, A2, No} = qlcmf(LC0, F, Imp, A1, No1), % nested...
+ NL = make_lcid(L1, No),
+ {T, A} = F(NL, LC, A2),
+ {?QLC_QQ(L1, L2, L3, L4, L5, L6, T, Os), A, No + 1};
qlcmf(?IMP_Q(L1, L2, LC0, Os0), F, Imp=true, A0, No0) when length(Os0)
< 2 ->
{Os, A1, No1} = qlcmf(Os0, F, Imp, A0, No0),
{LC, A2, No} = qlcmf(LC0, F, Imp, A1, No1), % nested...
BR,
Ulf W
> -----Original Message-----
> From: owner-erlang-bugs@REDACTED
> [mailto:owner-erlang-bugs@REDACTED] On Behalf Of Ulf Wiger (TN/EAB)
> Sent: den 24 juli 2006 13:52
> To: erlang-bugs@REDACTED
> Subject: ms_transform.erl doesn't handle packages
>
>
> I'm sure this isn't something lots of people have run into,
> but when using packages, a call to ets:fun2ms(Fun) must be
> written as .ets:fun2ms(Fun). The parse_transform code needs
> to recognize this form and transform it.
>
> (I know that the package support is undocumented and
> unsupported...)
>
> A diff that fixes the problem is given below.
>
> BR,
> Ulf W
>
>
> *** OTP_R11B/lib/stdlib-1.14/src/ms_transform.erl Tue May 23 16:03:38
> 2006
> --- ms_transform.erl Mon Jul 24 13:42:47 2006
> ***************
> *** 297,302 ****
> --- 297,306 ----
>
> copy({call,Line,{remote,_Line2,{atom,_Line3,ets},{atom,_Line4,
> fun2ms}},
> As0}) ->
> transform_call(ets,Line,As0);
> + copy({call,Line,{remote,_Line2,{record_field,_Line3,
> + {atom,_Line4,''},{atom,_Line5,ets}},
> + {atom,_Line6,fun2ms}}, As0}) ->
> + transform_call(ets,Line,As0);
>
> copy({call,Line,{remote,_Line2,{atom,_Line3,dbg},{atom,_Line4,
> fun2ms}},
> As0}) ->
> transform_call(dbg,Line,As0);
>
More information about the erlang-bugs
mailing list