Rewrote PS LOOP to support FOR..OF clauses that compile to JS for-in
loops (basically the equivalent of CL's "BEING THE HASH KEYS OF"). Because JS for-in loops can't be simulated with WHILE, this required changing how LOOP generates code - with these additional benefits: simpler implementation; smaller generated loops; all iteration vars now within the scope of the JS loop form, so that the LOOP macro now has consistent scoping behavior with hard-coded FOR, WHILE, etc. (notably with respect to whether to generate a new binding per iteration for variables captured by a closure). There is also the disadvantage that for some complex loops a temporary local variable must be used to track whether the loop is on its first iteration or not.
Showing with 203 additions and 285 deletions