Fixes define-judgment-form at the top-level with errortrace enabled
This commit is contained in:
parent
3ab067bc33
commit
d58a743b89
|
@ -1495,8 +1495,7 @@
|
||||||
(define nts (definition-nts lang stx syn-err-name))
|
(define nts (definition-nts lang stx syn-err-name))
|
||||||
(define-values (judgment-form-name dup-form-names mode position-contracts clauses)
|
(define-values (judgment-form-name dup-form-names mode position-contracts clauses)
|
||||||
(parse-define-judgment-form-body #'body syn-err-name stx))
|
(parse-define-judgment-form-body #'body syn-err-name stx))
|
||||||
(syntax-property
|
(define definitions
|
||||||
(prune-syntax
|
|
||||||
#`(begin
|
#`(begin
|
||||||
(define-syntax #,judgment-form-name
|
(define-syntax #,judgment-form-name
|
||||||
(judgment-form '#,judgment-form-name '#,mode #'judgment-form-proc #'#,lang #'judgment-form-lws))
|
(judgment-form '#,judgment-form-name '#,mode #'judgment-form-proc #'#,lang #'judgment-form-lws))
|
||||||
|
@ -1517,6 +1516,15 @@
|
||||||
[(_ clauses)
|
[(_ clauses)
|
||||||
(compile-judgment-form-lws (syntax->list #'clauses))]))])
|
(compile-judgment-form-lws (syntax->list #'clauses))]))])
|
||||||
(delayed #,clauses)))))
|
(delayed #,clauses)))))
|
||||||
|
(syntax-property
|
||||||
|
(prune-syntax
|
||||||
|
(if (eq? 'top-level (syntax-local-context))
|
||||||
|
; Introduce the names before using them, to allow
|
||||||
|
; judgment form definition at the top-level.
|
||||||
|
#`(begin
|
||||||
|
(define-syntaxes (judgment-form-proc judgment-form-lws) (values))
|
||||||
|
#,definitions)
|
||||||
|
definitions))
|
||||||
'disappeared-use
|
'disappeared-use
|
||||||
(map syntax-local-introduce dup-form-names)))]))
|
(map syntax-local-introduce dup-form-names)))]))
|
||||||
|
|
||||||
|
|
|
@ -2024,6 +2024,17 @@
|
||||||
|
|
||||||
})))
|
})))
|
||||||
|
|
||||||
|
(parameterize ([current-namespace (make-base-namespace)])
|
||||||
|
(eval '(require errortrace))
|
||||||
|
(eval '(require redex/reduction-semantics))
|
||||||
|
(eval '(define-language L))
|
||||||
|
(eval '(define-judgment-form L
|
||||||
|
mode : I
|
||||||
|
[(J a)
|
||||||
|
(J b)]
|
||||||
|
[(J b)]))
|
||||||
|
(test (eval '(judgment-holds (J a))) #t))
|
||||||
|
|
||||||
(parameterize ([current-namespace (make-base-namespace)])
|
(parameterize ([current-namespace (make-base-namespace)])
|
||||||
(eval '(require redex/reduction-semantics))
|
(eval '(require redex/reduction-semantics))
|
||||||
(eval '(define-language L
|
(eval '(define-language L
|
||||||
|
|
Loading…
Reference in New Issue
Block a user