Improves error message for premise typos
This commit is contained in:
parent
a2dc2d9540
commit
4d1651645a
|
@ -1938,17 +1938,18 @@
|
||||||
(for/fold ([acc (foldl pat-pos acc-init conc-in)])
|
(for/fold ([acc (foldl pat-pos acc-init conc-in)])
|
||||||
([prem (drop-ellipses #'prems)])
|
([prem (drop-ellipses #'prems)])
|
||||||
(syntax-case prem ()
|
(syntax-case prem ()
|
||||||
[(form-name . _)
|
|
||||||
(judgment-form-id? #'form-name)
|
|
||||||
(let-values ([(prem-in prem-out) (split-body prem)])
|
|
||||||
(check-judgment-arity prem)
|
|
||||||
(for ([pos prem-in]) (tmpl-pos pos acc))
|
|
||||||
(foldl pat-pos acc prem-out))]
|
|
||||||
[(-where pat tmpl)
|
[(-where pat tmpl)
|
||||||
(where-keyword? #'-where)
|
(where-keyword? #'-where)
|
||||||
(begin
|
(begin
|
||||||
(tmpl-pos #'tmpl acc)
|
(tmpl-pos #'tmpl acc)
|
||||||
(pat-pos #'pat acc))]
|
(pat-pos #'pat acc))]
|
||||||
|
[(form-name . _)
|
||||||
|
(if (judgment-form-id? #'form-name)
|
||||||
|
(let-values ([(prem-in prem-out) (split-body prem)])
|
||||||
|
(check-judgment-arity prem)
|
||||||
|
(for ([pos prem-in]) (tmpl-pos pos acc))
|
||||||
|
(foldl pat-pos acc prem-out))
|
||||||
|
(raise-syntax-error syn-err-name "expected judgment form name" #'form-name))]
|
||||||
[_ (raise-syntax-error syn-err-name "malformed premise" prem)])))
|
[_ (raise-syntax-error syn-err-name "malformed premise" prem)])))
|
||||||
(for ([pos conc-out]) (tmpl-pos pos acc-out))
|
(for ([pos conc-out]) (tmpl-pos pos acc-out))
|
||||||
acc-out)]))
|
acc-out)]))
|
||||||
|
|
|
@ -59,13 +59,21 @@
|
||||||
#:contract (J n))])
|
#:contract (J n))])
|
||||||
bad-def)
|
bad-def)
|
||||||
(#rx"malformed premise"
|
(#rx"malformed premise"
|
||||||
([bad-prem (q)])
|
([bad-prem q])
|
||||||
(let ()
|
(let ()
|
||||||
(define-judgment-form syn-err-lang
|
(define-judgment-form syn-err-lang
|
||||||
#:mode (J I)
|
#:mode (J I)
|
||||||
[(J number)
|
[(J number)
|
||||||
bad-prem])
|
bad-prem])
|
||||||
(void)))
|
(void)))
|
||||||
|
(#rx"expected judgment form name"
|
||||||
|
([bad-judgment-form q])
|
||||||
|
(let ()
|
||||||
|
(define-judgment-form syn-err-lang
|
||||||
|
#:mode (J I)
|
||||||
|
[(J number)
|
||||||
|
(bad-judgment-form)])
|
||||||
|
(void)))
|
||||||
(#rx"different numbers of positions"
|
(#rx"different numbers of positions"
|
||||||
([bad-def (define-judgment-form syn-err-lang
|
([bad-def (define-judgment-form syn-err-lang
|
||||||
#:mode (J I)
|
#:mode (J I)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user