Fix to allow metafunction definition at the top-level.

svn: r16218
This commit is contained in:
Casey Klein 2009-10-02 16:54:44 +00:00
parent 1003c22061
commit 0520a50f3e

View File

@ -1207,8 +1207,7 @@
[seq-of-lhs #'(lhs ...)]
[seq-of-tl-side-cond/binds #'(tl-side-cond/binds ...)]
[seq-of-lhs-for-lw #'(lhs-for-lw ...)])
(syntax-property
#`(begin
(with-syntax ([defs #`(begin
(define-values (name2 name-predicate)
(let ([sc `(side-conditions-rewritten ...)]
[dsc `dom-side-conditions-rewritten]
@ -1290,9 +1289,18 @@
`codom-side-conditions-rewritten
'name
#,relation?))))
(term-define-fn name name2))
(term-define-fn name name2))])
(syntax-property
(if (eq? 'top-level (syntax-local-context))
; Introduce the names before using them, to allow
; metafunction definition at the top-level.
(syntax
(begin
(define-syntaxes (name2 name-predicate) (values))
defs))
(syntax defs))
'disappeared-use
(map syntax-local-introduce (syntax->list #'(original-names ...)))))))))))))))]
(map syntax-local-introduce (syntax->list #'(original-names ...))))))))))))))))]
[(_ prev-metafunction name lang clauses ...)
(begin
(unless (identifier? #'name)