Fixed. Thanks for the bug report. Vladimir
2010/11/4 <[email protected]>: > Evaluating this gives an error ("The Parenscript form .. cannot be compiled > into an > expression"): > > PS> (ps (lambda () > (if baz 7 > (progn > (loop :repeat 100 :do (bar)) > 42)))) > > This wasn't an issue in the previous code, which would generate: > > "function () { > if (baz) { > return 7; > } else { > for (var _js1 = 0; _js1 < 100; _js1 += 1) { > bar(); > }; > return 42; > }; > };" > > Scott > > On 2010-11-03, at 11:23 PM, Vladimir Sedach wrote: > >> This bug is fixed in the patch I just committed which changes the way >> special operators work. >> >> In the process of changing the special operators and fixing this bug, >> I came to the conclusion that there is actually no way to implement a >> magic "expressionize" function for the compiler that will do the right >> thing for all forms - the necessary transformations depend both on the >> outer and inner special operators in different ways. I think it's >> possible to avoid the complexity of having a product of all possible >> cases for this, and even if it's not, the special operators can be >> grouped into only a few common classes, so things are not that bad. >> >> Please check out the latest version of Parenscript and see if the new >> code breaks anything. >> >> Vladimir >> >> 2010/10/1 <[email protected]>: >>> It appears that some commit between ac408014 and b9dc8d1a (maybe >>> 2f9fa1976a?) breaks the compilation of CASE forms in a function's tail >>> position when some (but not all) branches in a body form contain a RETURN. >>> >>> PS> (ps (defun foo () >>> (case x >>> ("bar" (if y (return t) nil)) >>> ("baz" nil)))) >>> "function foo() { >>> switch (x) { >>> case 'bar': >>> if (y) { >>> return true; >>> }; >>> //----------------- missing break; here >>> case 'baz': >>> return null; >>> }; >>> };" >>> >>> Scott >>> >>> _______________________________________________ >>> parenscript-devel mailing list >>> [email protected] >>> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel >>> >> >> _______________________________________________ >> parenscript-devel mailing list >> [email protected] >> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel > > > _______________________________________________ > parenscript-devel mailing list > [email protected] > http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel > _______________________________________________ parenscript-devel mailing list [email protected] http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
