Opened 10 years ago

Last modified 8 years ago

#1060 closed enhancement

reexport doesn't reexport implicit syntax exports — at Version 1

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

comment:1 Changed 10 years ago by Moritz Heidkamp

Description: modified (diff)

Fixed the example program.

Note: See TracTickets for help on using tickets.