Opened 7 years ago

Closed 5 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: ecloud
Estimated difficulty:

Description (last modified by Moritz Heidkamp)

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


(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)'
$ csi -R bar -p '(some-syntax bar)'

Error: unbound variable: some-implicitly-used-syntax

This was tested with version only so far.

Change History (6)

comment:1 Changed 7 years ago by Moritz Heidkamp

Description: modified (diff)

Fixed the example program.

comment:2 Changed 7 years ago by Christian Kellermann

This is also broken for Version 4.8.3 (rev ba01911)

comment:3 Changed 7 years ago by ecloud

Cc: ecloud added

comment:4 Changed 7 years ago by Moritz Heidkamp

Priority: majorminor
Type: defectenhancement

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 5 years ago by sjamaan


comment:6 Changed 5 years ago by sjamaan

Resolution: fixed
Status: newclosed

This seems to work now. Probably due to the fix for #1149.

Note: See TracTickets for help on using tickets.