Use contracts for def-binding.
Better error messages from require/typed. svn: r9204
This commit is contained in:
parent
7b611065b1
commit
909c20553d
|
@ -1,10 +1,11 @@
|
|||
#lang scheme/base
|
||||
|
||||
(require scheme/contract)
|
||||
|
||||
(provide (struct-out binding)
|
||||
(struct-out def-binding)
|
||||
(struct-out def-stx-binding))
|
||||
(define-struct binding (name) #:transparent)
|
||||
(define-struct (def-binding binding) (ty) #:transparent)
|
||||
(define-struct (def-stx-binding binding) () #:transparent)
|
||||
|
||||
(define-struct binding (name) #:inspector #f)
|
||||
(define-struct (def-binding binding) (ty) #:inspector #f)
|
||||
(define-struct (def-stx-binding binding) () #:inspector #f)
|
||||
(provide/contract (struct binding ([name identifier?]))
|
||||
(struct (def-binding binding) ([name identifier?] [ty any/c]))
|
||||
(struct (def-stx-binding binding) ([name identifier?])))
|
||||
|
|
|
@ -18,4 +18,4 @@
|
|||
(syntax-case stx ()
|
||||
[(require/contract nm cnt lib)
|
||||
#`(begin (require (only-in lib [nm tmp]))
|
||||
(define-ignored nm (contract cnt tmp '#,(syntax->datum #'nm) 'never-happen #'#,stx)))]))
|
||||
(define-ignored nm (contract cnt tmp '#,(syntax->datum #'nm) 'never-happen (quote-syntax nm))))]))
|
||||
|
|
Loading…
Reference in New Issue
Block a user