<div dir="ltr">Roger said:<div><span style="font-size:12.8px">> The thing is: What costs time? The evaluation until you get there, or</span><br style="font-size:12.8px"><span style="font-size:12.8px">> the "keep going"?</span><br style="font-size:12.8px">><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">Yesterday I spent an hour gathering the dependencies of a software</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">package. I would run "./configure" it would spend three minutes</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">checking for header files, and then it would say: Can't find XXXX and</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">bomb out.</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">So, normally my strategy is to fix the first error (or occasionally a</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">random error) and try again. But if it works like yesterday where the</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">wait until the error occurs I'll quickly switch to fixing ALL errors</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">before I try again.</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">For openSCAD as I know it, the "ignore undefined modules" strategy has</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">its merits. But a bigger "warning: ignored 3 undefined modules" would</span><br style="font-size:12.8px"><span style="font-size:12.8px">> </span><span style="font-size:12.8px">IMHO be better...</span><br style="font-size:12.8px"></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">You raise a good point.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">OpenSCAD has an evaluation phase (which generates the CSG tree), then a rendering phase (which generates the mesh).</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Normally, the evaluation phase is quick (milliseconds). This is the phase where undefined modules are detected. Since there's normally no wait, I want this phase to abort on first error and highlight in the text editor the subexpression where the error occurred, because that would be the most productive way for me to fix errors. That's what works for me. If other people disagree, maybe this should be configurable?</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">The rendering phase is slow, and takes minutes or hours for any serious model. During this phase, it would make sense to print informative error messages and keep going, so that you can fix all the errors in a batch. Unfortunately, CGAL assertion messages don't give you helpful information that points back at the location in the source where the error occurred. This is something that I think may improve in the future, based on active pull requests.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Now, there is pressure from some parts of the community to support geometric evaluation during the evaluation phase. (Recently, a request for a boolean function to test if two shapes intersect, but there's a long history of similar requests.) And, there are other parts of the community who push back on this, and uphold the benefits of a fast evaluation phase and fast preview. If we do go in the direction of making OpenSCAD more powerful, at the expensive of long evaluation times, then the tradeoff changes, and maybe abort on first error starts to make less sense.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">The goal is to provide a productive workflow. Since we have a fully integrated system with our own GUI and our own evaluator, we have the ability to make this work very nicely. I would like the ability to jump into the editor at the error location the instant an error occurs so that I can fix the bug, regardless of whether evaluation continues past that point. If evaluation does continue, then a button to advance to the next error would be desirable.</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 16 June 2016 at 00:41, Rogier Wolff <span dir="ltr"><<a href="mailto:R.E.Wolff@bitwizard.nl" target="_blank">R.E.Wolff@bitwizard.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Jun 15, 2016 at 09:14:09PM -0400, doug moen wrote:<br>
<br>
> if C() is not defined, I want the evaluator to halt, highlight the<br>
> expression C() in the editor, and display an error message, so that<br>
> I can quickly fix my typo and try again. I can't get a correct<br>
> result if C() is undefined, so the best thing the system can do for<br>
> me is help me to correct the error as quickly as possible.<br>
<br>
> I don't want the system to keep going, making me wait for a bad result.<br>
<br>
</span>The thing is: What costs time? The evaluation until you get there, or<br>
the "keep going"?<br>
<br>
Yesterday I spent an hour gathering the dependencies of a software<br>
package. I would run "./configure" it would spend three minutes<br>
checking for header files, and then it would say: Can't find XXXX and<br>
bomb out.<br>
<br>
So, normally my strategy is to fix the first error (or occasionally a<br>
random error) and try again. But if it works like yesterday where the<br>
wait until the error occurs I'll quickly switch to fixing ALL errors<br>
before I try again.<br>
<br>
For openSCAD as I know it, the "ignore undefined modules" strategy has<br>
its merits. But a bigger "warning: ignored 3 undefined modules" would<br>
IMHO be better...<br>
<br>
        Roger.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
** R.E.Wolff@BitWizard.nl ** <a href="http://www.BitWizard.nl/" rel="noreferrer" target="_blank">http://www.BitWizard.nl/</a> ** <a href="tel:%2B31-15-2600998" value="+31152600998">+31-15-2600998</a> **<br>
**    Delftechpark 26 2628 XH  Delft, The Netherlands. KVK: 27239233    **<br>
*-- BitWizard writes Linux device drivers for any device you may have! --*<br>
The plan was simple, like my brother-in-law Phil. But unlike<br>
Phil, this plan just might work.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
OpenSCAD mailing list<br>
<a href="mailto:Discuss@lists.openscad.org">Discuss@lists.openscad.org</a><br>
<a href="http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org" rel="noreferrer" target="_blank">http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org</a><br>
<br>
<br>
</div></div></blockquote></div><br></div>