The docs say that if I make an internal definition context with syntax-local-make-definition-context, I have to seal it with internal-definition-context-seal, otherwise an exception gets raised. But I can't get this to happen. Does someone have an example that causes the exception to get thrown?
For example, this program from the racket tests produces the same result if I comment out the seal line. Other tests behave similarly. (define-syntax (bind stx) (syntax-case stx () [(_ handle def) (let ([def-ctx (syntax-local-make-definition-context)] [ctx (cons (gensym 'intdef) (let ([orig-ctx (syntax-local-context)]) (if (pair? orig-ctx) orig-ctx null)))] [kernel-forms (list #'define-values)]) (let ([def (local-expand #'def ctx kernel-forms def-ctx)]) (syntax-case def () [(define-values (id) rhs) (begin (syntax-local-bind-syntaxes (list #'id) #f def-ctx) (internal-definition-context-seal def-ctx) #'(begin (define-values (id) rhs) (define-syntax handle (quote-syntax id))))] [_ (error "no")])))])) (define-syntax (nab stx) (syntax-case stx () [(_ handle) (syntax-local-value #'handle)])) (let () (bind h (define q 5)) (define q 8) (nab h)) _________________________ Racket Developers list: http://lists.racket-lang.org/dev