Fix use of gestalt-stx

This commit is contained in:
Tony Garnock-Jones 2014-06-27 00:36:09 -04:00
parent 064d70d602
commit 07bc1affed
1 changed files with 15 additions and 10 deletions

View File

@ -334,18 +334,23 @@
'())
(list (lambda (g-stx) remaining-stx)))
(push! gestalt-updaters
#`(begin
(define #,projector-init (#,(if pub? #'project-subs #'project-pubs) #,projector-stx
#:level #,(or level 0) #:meta-level #,(or meta-level 0)))
(define #,gestalt-init (projection->gestalt #,projector-init))
#,@(if using-set? #`(#:update [#,projector-name #,projector-init]) #'())
#,@(if gestalt-name-available? #`(#:update [#,gestalt-name #,gestalt-init]) #'())))
(when gestalt-name-available?
(push! gestalt-updaters
#`(begin
(define #,projector-init (#,(if pub? #'project-subs #'project-pubs) #,projector-stx
#:level #,(or level 0) #:meta-level #,(or meta-level 0)))
(define #,gestalt-init (projection->gestalt #,projector-init))
#,@(if using-set? #`(#:update [#,projector-name #,projector-init]) #'())
#,@(if gestalt-name-available? #`(#:update [#,gestalt-name #,gestalt-init]) #'()))))
(push! gestalt-fragments
(if condition
#`(if #,condition #,(if gestalt-name-available? gestalt-name gestalt-stx) (gestalt-empty))
(if gestalt-name-available? gestalt-name gestalt-stx))))
(let ((g (if gestalt-name-available?
gestalt-name
#`(#,(if pub? #'pub #'sub) #,gestalt-stx
#:level #,(+ 1 (or level 0)) #:meta-level #,(or meta-level 0)))))
(if condition
#`(if #,condition #,g (gestalt-empty))
g))))
(define (analyze-participation! pat-stx body-stx pub?)
(define-values (p remaining-stx) (analyze-participator-body body-stx (participator #f #f)))