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

(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 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

Milestone: 4.9.04.10.0
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

Milestone: 4.10.04.11.0

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.