Hi Alan,
On Wed, Jan 6, 2010 at 6:04 PM, Erik Huelsmann ehuels@gmail.com wrote:
I can see the error shown by the symbol-macrolet in the precompiler sources:
572 (defun precompile-lambda (form) 573 (let ((body (cddr form)) 574 (precompiled-lambda-list 575 (precompile-lambda-list (cadr form))) 576 (*inline-declarations* *inline-declarations*)) 577 (process-optimization-declarations body) 578 (list* 'LAMBDA precompiled-lambda-list 579 (mapcar #'precompile1 body))))
Before going on to process the lambda body statements in line 579, precompile-lambda should establish variables from the lambda list shadowing the symbol-macrolet...
The error turned out to be in PRECOMPILE-LAMBDA and PRECOMPILE-NAMED-LAMBDA. Committed the fix in r12340 in trunk. This will be in 0.18.
I think it would be a good idea to extend your inline-lambda-rewriter to be able to parse/rewrite all lambda lists, not only the ones with &rest arguments (did I see correctly that you restricted to that case?).
Bye,
Erik.