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 };"