Summary
let-syntax and letrec-syntax don't recognize local vars in compiled code
Metadata
- Id: 06f50d273c9bab9e1c20becefe73b55e9b199fdc
- Trac id: 15
- Type: defect
- Reporter: ashinn
- Owner: felix
- Cc:
- Status: closed
- Component: compiler
- Estimated difficulty:
- Resolution: fixed
- Priority: critical
- Milestone:
- Version: 4.0.1
- Changetime: 2009-04-22 14:01:50 UTC
- Created: 2009-04-21 20:27:38 UTC
- Keywords: syntax lexical scope
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.