<div dir="ltr">This has to work without core optimizations.<div><br></div><div>Non literal keys, or those that can't be converted to literals, has to be rejected as non-valid expressions or patterns. At least in this stage of Maps dev with literals only key.</div>
<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-03-04 22:40 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">Oh wait, nevermind, that transformation can already be done in sys_core_fold. Will do that there.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Anthony Ramine<br>
<br>
Le 4 mars 2014 à 22:36, Anthony Ramine <<a href="mailto:n.oxyde@gmail.com">n.oxyde@gmail.com</a>> a écrit :<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> Hello Björn,<br>
><br>
> So if I understand you correctly as you mentioned in one of PRs, there should be a pass sitting between v3_core and v3_kernel that would normalize such keys to variables, for example, right? Meanwhile, v3_core should just emit variables for non-literals keys until that pass exists, do we agree?<br>

><br>
> Regards,<br>
><br>
> --<br>
> Anthony Ramine<br>
><br>
> Le 4 mars 2014 à 09:38, Ulf Norell <<a href="mailto:ulf.norell@quviq.com">ulf.norell@quviq.com</a>> a écrit :<br>
><br>
>> -module(bug).<br>
>> f() -> #{[try a after b end] => 0}.<br>
>><br>
>> -module(bug).<br>
>> f() -> ok.<br>
>> g() -> #{fun f/0 => 0}.<br>
>><br>
>> -module(bug).<br>
>> f() -> ok.<br>
>> g() -> #{{f()} => 0}.<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 kernel_module;<br>
>> crash reason: function_clause<br>
>><br>
>>  in function  v3_kernel:map_key_clean/1<br>
>>     called as v3_kernel:map_key_clean({k_cons,[2,{file,"bug.erl"}],{k_var,[],cor4},{k_nil,[2,{file,"bug.erl"}]}})<br>
>>  in call from v3_kernel:map_group_pairs/2 (v3_kernel.erl, line 553)<br>
>>  in call from v3_kernel:map_group_pairs/1 (v3_kernel.erl, line 529)<br>
>>  in call from v3_kernel:map_split_pairs/5 (v3_kernel.erl, line 511)<br>
>>  in call from v3_kernel:expr/3 (v3_kernel.erl, line 327)<br>
>>  in call from v3_kernel:expr/3 (v3_kernel.erl, line 307)<br>
>>  in call from v3_kernel:function/2 (v3_kernel.erl, line 152)<br>
>>  in call from lists:mapfoldl/3 (lists.erl, line 1352)<br>
>> bug.erl:2: Warning: function f/0 is unused<br>
>> error<br>
>><br>
>> / Ulf<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>
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>
</div></div></blockquote></div><br></div>