This is actually due to the dumb way that LET decides whether it needs to rename a variable or not. I'm going to see if I can make it produce better code.
Vladimir
On Fri, Oct 9, 2009 at 2:46 PM, Daniel Gackle danielgackle@gmail.com wrote:
Further to the previous bug report, I noticed that lexical variables are being renamed unnecessarily in this case:
(ps (let ((x (@ foo x))) (blah x))) => "var x2 = foo.x; blah(x2);"
Here the generated code isn't incorrect, as in the bug with CREATE, but I wonder if the two problems aren't related: in each case, PS appears to mistake a symbol reference for a lexical variable reference.
On Fri, Oct 9, 2009 at 2:00 PM, Daniel Gackle danielgackle@gmail.com wrote:
In this example, the CREATE form is being expanded incorrectly, because the symbol A passed to it is not a reference to either of the lexical variables in scope.
(ps (let ((a 99)) (let ((a 22)) (create a 33))))
=>
"var a = 99; var a666 = 22; { a666 : 33 };"
parenscript-devel mailing list parenscript-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel