Opened 12 years ago
Closed 10 years ago
#1060 closed enhancement (fixed)
reexport doesn't reexport implicit syntax exports
| Reported by: | Moritz Heidkamp | Owned by: | |
|---|---|---|---|
| Priority: | minor | Milestone: | 4.11.0 | 
| Component: | expander | Version: | 4.8.x | 
| Keywords: | Cc: | Shawn Rutledge | |
| Estimated difficulty: | 
Description (last modified by )
Given a module that exports some syntax which expands to an identifier which isn't explicilty exported, that syntax will not work if it is reexported by another module. Example:
;;; foo.scm
(module foo
(some-syntax)
(import scheme)
(define-syntax some-implicitly-used-syntax
  (syntax-rules ()
    ((_ x) x)))
(define-syntax some-syntax
  (syntax-rules ()
    ((_ x)
     (some-implicitly-used-syntax 'x))))
)
;;; bar.scm
(module bar
()
(reexport foo)
)
To trigger the bug:
$ csc -s -J foo.scm $ csc -s -J bar.scm $ csi -R foo -p '(some-syntax bar)' bar $ csi -R bar -p '(some-syntax bar)' Error: unbound variable: some-implicitly-used-syntax
This was tested with version 4.8.0.5 only so far.
Change History (6)
comment:1 Changed 12 years ago by
| Description: | modified (diff) | 
|---|
comment:3 Changed 12 years ago by
| Cc: | Shawn Rutledge added | 
|---|
comment:4 Changed 12 years ago by
| Milestone: | 4.9.0 → 4.10.0 | 
|---|---|
| Priority: | major → minor | 
| Type: | defect → enhancement | 
Given that automatic export of implicitly referenced identifiers is an undocumented feature of the module system as of now, this ticket should be considered a feature request instead.
comment:5 Changed 10 years ago by
| Milestone: | 4.10.0 → 4.11.0 | 
|---|
comment:6 Changed 10 years ago by
| Resolution: | → fixed | 
|---|---|
| Status: | new → closed | 
This seems to work now.  Probably due to the fix for #1149.
Note: See
        TracTickets for help on using
        tickets.
    

Fixed the example program.