typed: improve error messages
This commit is contained in:
parent
55477446c2
commit
3ec1048aad
|
@ -384,7 +384,7 @@
|
||||||
"expected exactly one Role for body"
|
"expected exactly one Role for body"
|
||||||
#:with (τ-i τ-o τ-i/i τ-o/i τ-a) (analyze-roles #'(τ-f ...))
|
#:with (τ-i τ-o τ-i/i τ-o/i τ-a) (analyze-roles #'(τ-f ...))
|
||||||
#:fail-unless (<: #'τ-o #'τ-c.norm)
|
#:fail-unless (<: #'τ-o #'τ-c.norm)
|
||||||
(format "Output ~a not valid in dataspace ~a" (type->str #'τ-o) (type->str #'τ-c.norm))
|
(format "Outputs ~a not valid in dataspace ~a" (make-output-error-message #'τ-o #'τ-c.norm) (type->str #'τ-c.norm))
|
||||||
#:with τ-final #;(mk-Actor- #'(τ-c.norm)) (mk-ActorWithRole- #'(τ-c.norm τ-f ...))
|
#:with τ-final #;(mk-Actor- #'(τ-c.norm)) (mk-ActorWithRole- #'(τ-c.norm τ-f ...))
|
||||||
#:fail-unless (<: #'τ-a #'τ-final)
|
#:fail-unless (<: #'τ-a #'τ-final)
|
||||||
"Spawned actors not valid in dataspace"
|
"Spawned actors not valid in dataspace"
|
||||||
|
@ -402,10 +402,29 @@
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
[≻ (spawn #,τc s)]])
|
[≻ (spawn #,τc s)]])
|
||||||
|
|
||||||
|
;; (Listof Type) -> String
|
||||||
|
(define-for-syntax (tys->str tys)
|
||||||
|
(string-join (map type->str tys) ",\n"))
|
||||||
|
|
||||||
|
;; Type Type -> String
|
||||||
|
(define-for-syntax (make-output-error-message τ-o τ-c)
|
||||||
|
;; Type -> (Listof Type)
|
||||||
|
(define (flatten-U τ)
|
||||||
|
(syntax-parse τ
|
||||||
|
[(~U* τs ...)
|
||||||
|
(apply append (stx-map flatten-U #'(τs ...)))]
|
||||||
|
[_
|
||||||
|
(list τ)]))
|
||||||
|
(define offenders
|
||||||
|
(for/list ([t (in-list (flatten-U τ-o))]
|
||||||
|
#:unless (<: t τ-c))
|
||||||
|
t))
|
||||||
|
(tys->str offenders))
|
||||||
|
|
||||||
;; Type Type Type -> String
|
;; Type Type Type -> String
|
||||||
(define-for-syntax (make-actor-error-message τ-i τ-o τ-c)
|
(define-for-syntax (make-actor-error-message τ-i τ-o τ-c)
|
||||||
(define mismatches (find-surprising-inputs τ-i τ-o τ-c))
|
(define mismatches (find-surprising-inputs τ-i τ-o τ-c))
|
||||||
(string-join (map type->str mismatches) ",\n"))
|
(tys->str mismatches))
|
||||||
|
|
||||||
;; Type Type Type -> (Listof Type)
|
;; Type Type Type -> (Listof Type)
|
||||||
(define-for-syntax (find-surprising-inputs τ-i τ-o τ-c)
|
(define-for-syntax (find-surprising-inputs τ-i τ-o τ-c)
|
||||||
|
|
Loading…
Reference in New Issue