<div dir="ltr">Logging.<div><br></div><div>I had a private discussion with Anthony. The suggested solution is not the way to solve it.</div><div>In fact, the same problem occurs with binaries as well.</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">2014-03-23 12:29 GMT+01:00 Anthony Ramine <span dir="ltr"><<a href="mailto:n.oxyde@gmail.com" target="_blank">n.oxyde@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<a href="https://github.com/erlang/otp/pull/306" target="_blank">https://github.com/erlang/otp/pull/306</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Anthony Ramine<br>
<br>
Le 18 mars 2014 à 21:45, Björn-Egil Dahlberg <<a href="mailto:wallentin.dahlberg@gmail.com">wallentin.dahlberg@gmail.com</a>> a écrit :<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> In the future Maps should be considered as data but since it seemed like I needed a crowbar and some soap to whack it into the cerl opt structure "nicely" I decided against it for now, fearing more destruction than gains .. also I wanted literals in the master branch. =) The omission of maps as data will currently omit some core optimizations .. which is also totally ok .. for now.<br>

><br>
> is_data(#c_literal{val=V}) when not is_map(V) -><br>
>     true;<br>
><br>
> Looks reasonable to me at this point. Give me a shout if you see/find any flaws with this plan.<br>
><br>
> // Björn-Egil<br>
><br>
><br>
> 2014-03-18 19:58 GMT+01:00 Anthony Ramine <<a href="mailto:n.oxyde@gmail.com">n.oxyde@gmail.com</a>>:<br>
> Hello,<br>
><br>
> Are map literals supposed to be considered data, as per cerl:is_data/1? can I currently fix this by changing<br>
><br>
> is_data(#c_literal{}) -><br>
>     true;<br>
><br>
> to<br>
><br>
> is_data(#c_literal{val=V}) when not is_map(V) -><br>
>     true;<br>
><br>
> or not?<br>
><br>
> Regards,<br>
><br>
> --<br>
> Anthony Ramine<br>
><br>
> Le 18 mars 2014 à 18:53, Anthony Ramine <<a href="mailto:n.oxyde@gmail.com">n.oxyde@gmail.com</a>> a écrit :<br>
><br>
> > Cool, will look at it.<br>
> ><br>
> > --<br>
> > Anthony Ramine<br>
> ><br>
> > Le 18 mars 2014 à 17:50, Ulf Norell <<a href="mailto:ulf.norell@quviq.com">ulf.norell@quviq.com</a>> a écrit :<br>
> ><br>
> >> That fixed the case when the map doesn't match but I get the same error when it's the map that matches and other patterns that don't:<br>
> >><br>
> >> -module(bug).<br>
> >> f() -><br>
> >>  case #{} of<br>
> >>    #{} -> 0;<br>
> >>    a   -> 1<br>
> >>  end.<br>
> >><br>
> >> This is on master from today (aab1afa8a63081f2c30f83ebe8b6caaac979795c).<br>
> >><br>
> >> / Ulf<br>
> >><br>
> >><br>
> >> On Tue, Mar 4, 2014 at 11:38 PM, Anthony Ramine <<a href="mailto:n.oxyde@gmail.com">n.oxyde@gmail.com</a>> wrote:<br>
> >> <a href="https://github.com/erlang/otp/pull/267" target="_blank">https://github.com/erlang/otp/pull/267</a><br>
> >><br>
> >> --<br>
> >> Anthony Ramine<br>
> >><br>
> >> Le 4 mars 2014 à 09:45, Ulf Norell <<a href="mailto:ulf.norell@quviq.com">ulf.norell@quviq.com</a>> a écrit :<br>
> >><br>
> >>> This one crashes in a different place but likely for the same reason.<br>
> >>><br>
> >>> -module(bug).<br>
> >>> f() -><br>
> >>>  case true of<br>
> >>>    #{}  -> error;<br>
> >>>    true -> ok<br>
> >>>  end.<br>
> >>><br>
> >>> $ erl<br>
> >>> Erlang/OTP 17 [RELEASE CANDIDATE 2] [erts-6.0] [source-a74e66a] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]<br>
> >>><br>
> >>> Eshell V6.0  (abort with ^G)<br>
> >>> 1> c(bug).<br>
> >>> Function: f/0<br>
> >>> bug.erl: internal error in core_fold_module;<br>
> >>> crash reason: function_clause<br>
> >>><br>
> >>>  in function  sys_core_fold:opt_bool_clauses/3<br>
> >>>     called as sys_core_fold:opt_bool_clauses([],true,false)<br>
> >>>  in call from sys_core_fold:opt_bool_clauses/3 (sys_core_fold.erl, line 1815)<br>
> >>>  in call from sys_core_fold:opt_bool_clauses/1 (sys_core_fold.erl, line 1790)<br>
> >>>  in call from sys_core_fold:opt_bool_case/1 (sys_core_fold.erl, line 1779)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 347)<br>
> >>>  in call from sys_core_fold:opt_simple_let_1/4 (sys_core_fold.erl, line 2562)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 355)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 279)<br>
> >>> bug.erl:2: Warning: function f/0 is unused<br>
> >>> error<br>
> >>><br>
> >>> / Ulf<br>
> >>><br>
> >>><br>
> >>><br>
> >>> On Tue, Mar 4, 2014 at 9:42 AM, Ulf Norell <<a href="mailto:ulf.norell@quviq.com">ulf.norell@quviq.com</a>> wrote:<br>
> >>> -module(bug).<br>
> >>> f() -><br>
> >>>  case maybe_map of<br>
> >>>    #{}     -> ok;<br>
> >>>    not_map -> error<br>
> >>>  end.<br>
> >>><br>
> >>> $ erl<br>
> >>> Erlang/OTP 17 [RELEASE CANDIDATE 2] [erts-6.0] [source-a74e66a] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]<br>
> >>><br>
> >>> Eshell V6.0  (abort with ^G)<br>
> >>> 1> c(bug).<br>
> >>> Function: f/0<br>
> >>> bug.erl: internal error in core_fold_module;<br>
> >>> crash reason: {case_clause,{none}}<br>
> >>><br>
> >>>  in function  sys_core_fold:will_match/2 (sys_core_fold.erl, line 1748)<br>
> >>>  in call from sys_core_fold:clauses/5 (sys_core_fold.erl, line 1701)<br>
> >>>  in call from sys_core_fold:clauses/5 (sys_core_fold.erl, line 1718)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 352)<br>
> >>>  in call from sys_core_fold:clause/4 (sys_core_fold.erl, line 1481)<br>
> >>>  in call from sys_core_fold:clauses/5 (sys_core_fold.erl, line 1699)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 352)<br>
> >>>  in call from sys_core_fold:expr/3 (sys_core_fold.erl, line 279)<br>
> >>> bug.erl:2: Warning: function f/0 is unused<br>
> >>> error<br>
> >>><br>
> >>> / Ulf<br>
> >>><br>
> >>><br>
> >>> _______________________________________________<br>
> >>> erlang-bugs mailing list<br>
> >>> <a href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a><br>
> >>> <a href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a><br>
> >><br>
> >> _______________________________________________<br>
> >> erlang-bugs mailing list<br>
> >> <a href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a><br>
> >> <a href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a><br>
> >><br>
> ><br>
><br>
> _______________________________________________<br>
> erlang-bugs mailing list<br>
> <a href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a><br>
><br>
<br>
</div></div></blockquote></div><br></div>