better error message

main
Matthew Butterick 4 years ago
parent c76d08d964
commit 9db4182c21

@ -76,9 +76,13 @@ https://github.com/mbutterick/restructure/blob/master/src/Struct.coffee
(define parent (mhasheq x:parent-key parent-arg
x:val-key val
x:pointer-size-key 0))
(define fields-size (for/sum ([(key type) (in-dict @fields)]
(define fields-size (let ([key-missing-signal (gensym)])
(for/sum ([(key type) (in-dict @fields)]
#:when (xenomorphic-type? type))
(send type x:size (and val (send type pre-encode (dict-ref val key))) parent)))
(match (dict-ref val key key-missing-signal)
[(== key-missing-signal eq?)
(raise-argument-error 'x:dict (format "dict that contains value for key ~v" key) val)]
[val (send type x:size (and val (send type pre-encode val)) parent)]))))
(define pointers-size (if include-pointers (dict-ref parent x:pointer-size-key) 0))
(+ fields-size pointers-size))))

Loading…
Cancel
Save