<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">The issue seems to be that the compile-time function created by the module is huge and tries to allocate a compile-time list with 1555 elements. The lists:foreach call is probably misleading - that's just somewhere on the compiler stack. The good thing is that it's probably just a matter of refactoring  macros in the Absinthe.Phase.Schema.Compile module. It shouldn't need to build such huge lists (I've reviewed the module briefly).</div>
<div name="messageSignatureSection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br />
MichaƂ.</div>
<div name="messageReplySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">On 4 Dec 2018, 19:44 +0100, Michael Schmidt <Michael.K.Schmidt@schneider-electric.com>, wrote:<br />
<blockquote type="cite" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">
<div class="WordSection1">
<p class="MsoNormal">I have been chasing a compile error:</p>
<p class="MsoNormal" style="margin-left:.5in">** (CompileError) elixir_compiler_1: function '__MODULE__'/1+17:</p>
<p class="MsoNormal" style="margin-left:.5in">  An implementation limit was reached.</p>
<p class="MsoNormal" style="margin-left:.5in">  Try reducing the complexity of this function.</p>
<p class="MsoNormal" style="margin-left:.5in"> </p>
<p class="MsoNormal" style="margin-left:.5in">  Instruction: {move,{x,0},{y,1555}}</p>
<p class="MsoNormal" style="margin-left:.5in"> </p>
<p class="MsoNormal" style="margin-left:.5in">    (stdlib) lists.erl:1338: :lists.foreach/2</p>
<p class="MsoNormal" style="margin-left:.5in">    lib/absinthe/phase/schema/compile.ex:51: Absinthe.Phase.Schema.Compile.run/2</p>
<p class="MsoNormal" style="margin-left:.5in">    lib/absinthe/pipeline.ex:283: Absinthe.Pipeline.run_phase/3</p>
<p class="MsoNormal" style="margin-left:.5in">    lib/absinthe/schema.ex:214: Absinthe.Schema.__after_compile__/2</p>
<p class="MsoNormal" style="margin-left:.5in">    (stdlib) lists.erl:1263: :lists.foldl/3</p>
<p class="MsoNormal" style="margin-left:.5in">    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6</p>
<p class="MsoNormal" style="margin-left:.5in">    (elixir) lib/kernel/parallel_compiler.ex:206: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I realize this is an Elixir / Absinthe issue, but my question is this:  How is lists:foreach() able to trigger this? </p>
<p class="MsoNormal"><a href="https://github.com/erlang/otp/blob/master/lib/stdlib/src/lists.erl#L1332">https://github.com/erlang/otp/blob/master/lib/stdlib/src/lists.erl#L1332</a></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Poking around, there is indeed a list of 776 items that generates 2 function defs each, which gives us a final AST list of approx 1552.  I assume this is related to the {y,1555} in Error.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Can lists:each() not handle lists longer than 1024?  What am I missing?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thanks!</p>
<p class="MsoNormal">Mike</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td valign="bottom" style="padding:.75pt .75pt .75pt .75pt"></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
</div>
_______________________________________________<br />
erlang-questions mailing list<br />
erlang-questions@erlang.org<br />
http://erlang.org/mailman/listinfo/erlang-questions<br /></blockquote>
</div>
</body>
</html>