add a contract to places that use the #:kind argument (including defthing)

closes 
This commit is contained in:
Robby Findler 2020-08-13 10:29:33 -05:00
parent a8813aa510
commit 5415cca336

View File

@ -17,6 +17,7 @@
"on-demand.rkt" "on-demand.rkt"
scheme/string scheme/string
scheme/list scheme/list
racket/contract
(for-syntax racket/base (for-syntax racket/base
syntax/parse) syntax/parse)
(for-label racket/base (for-label racket/base
@ -126,10 +127,12 @@
[(_ v) #'(racketblock0 v)])) [(_ v) #'(racketblock0 v)]))
(begin-for-syntax (begin-for-syntax
(define-splicing-syntax-class kind-kw (define-splicing-syntax-class kind-kw
#:description "#:kind keyword" #:attributes (kind) ;; Expr[String/#f]
(pattern (~optional (~seq #:kind kind) #:description "#:kind keyword"
#:defaults ([kind #'#f])))) (pattern (~optional (~seq #:kind k))
#:declare k (expr/c #'(or/c string? #f) #:name "#:kind argument")
#:with kind #'(~? k.c #f)))
(define-splicing-syntax-class value-kw (define-splicing-syntax-class value-kw
#:description "#:value keyword" #:description "#:value keyword"