Summary

let-syntax and letrec-syntax don't recognize local vars in compiled code

Metadata

Description

The following simple module:

   (module foo (foo)
     (import scheme)
     (define (foo)
       (let ((qux 3))
         (let-syntax ((bar (syntax-rules () ((bar) qux))))
           (bar)))))

fails to compile with the following error:

   Warning: reference to possibly unbound identifier: qux10

   Error: module unresolved: foo

Call history:

<syntax>		(begin35 (##sys#syntax-error-hook "no rule matches form" input17))
<syntax>		(##sys#syntax-error-hook "no rule matches form" input17)
<syntax>		(##sys#cdr input17)
<syntax>		(begin45 (bar))
<syntax>		(bar)
<eval>		(##sys#cdr input17)
<eval>		(##sys#eq? tail27 (quote ()))
<eval>		(rename26 (syntax qux))	<--

However the same code loads and evalutes fine in the interpreter.

Changes and comments

[2009-04-22 09:05:13 UTC] felix changed priority from major to critical

[2009-04-22 09:05:13 UTC] felix changed status from new to assigned

[2009-04-22 14:01:50 UTC] felix changed status from assigned to closed

[2009-04-22 14:01:50 UTC] felix set resolution to fixed

[2009-04-22 14:01:50 UTC] felix wrote:

This might possibly be fixed in r14340.