chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-janitors] #944: Macro-renamed definitions in begin bodies d


From: Chicken Trac
Subject: Re: [Chicken-janitors] #944: Macro-renamed definitions in begin bodies don't get seen by later forms (but only in modules)
Date: Tue, 30 Oct 2012 19:30:06 -0000

#944: Macro-renamed definitions in begin bodies don't get seen by later forms
(but only in modules)
-----------------------+----------------------------------------------------
  Reporter:  sjamaan   |       Owner:  sjamaan                           
      Type:  defect    |      Status:  new                               
  Priority:  major     |   Milestone:  4.9.0                             
 Component:  expander  |     Version:  4.8.x                             
Resolution:            |    Keywords:  expander, macros, hygiene, modules
-----------------------+----------------------------------------------------

Comment(by sjamaan):

 The problem appears to be that the "define" macro calls {{{##sys#register-
 export}}} with the macro-aliased name, so something like "req15" ends up
 in the module-exist-list.  Later, the evaluator sees {{{##core#set!}}} or
 the variable reference and calls {{{##sys#alias-global-hook}}} on it,
 which returns the original identifier which was macro-aliased.  This can't
 be found in the module-exist-list and that causes the module to be
 unresolvable.

 The bug is in the way the alias-global-hook is invoked; it shouldn't be
 resolving the identifier to its bare form; this causes an unhygienic
 lookup.  I'm not sure how to fix it yet.

 BTW: I think {{{##sys#register-export}}} is badly named; it doesn't
 register an exported identifier; it merely adds it to the list of
 identifiers known to be defined in the module (module-exist-list).

-- 
Ticket URL: <http://bugs.call-cc.org/ticket/944#comment:4>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]