Move define-struct/printer
to new file.
Avoids runtime dependency on `racket/generic`. original commit: 973da6a50cd0994b69b5b8b7cb1f374786de469f
This commit is contained in:
parent
74b6ccbf6a
commit
88c5098309
|
@ -1,5 +1,6 @@
|
|||
#lang racket/base
|
||||
(require "../utils/utils.rkt"
|
||||
"../utils/print-struct.rkt"
|
||||
racket/match
|
||||
(contract-req)
|
||||
"free-variance.rkt"
|
||||
|
@ -19,7 +20,7 @@
|
|||
|
||||
|
||||
(lazy-require
|
||||
("../types/printer.rkt" (print-type print-filter print-object print-pathelem)))
|
||||
["../types/printer.rkt" (print-type print-filter print-object print-pathelem)])
|
||||
|
||||
|
||||
(provide == defintern hash-id (for-syntax fold-target))
|
||||
|
|
16
collects/typed-racket/utils/print-struct.rkt
Normal file
16
collects/typed-racket/utils/print-struct.rkt
Normal file
|
@ -0,0 +1,16 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/generic (for-syntax racket/base syntax/parse))
|
||||
(provide define-struct/printer)
|
||||
|
||||
(define-syntax (define-struct/printer stx)
|
||||
(syntax-parse stx
|
||||
[(form name (flds ...) printer:expr)
|
||||
#`(define-struct name (flds ...)
|
||||
#:property prop:custom-print-quotable 'never
|
||||
;; Eta expansion so that printer is not evaluated
|
||||
;; until needed.
|
||||
#:methods gen:custom-write
|
||||
[(define (write-proc v port write?)
|
||||
(printer v port write?))]
|
||||
#:transparent)]))
|
|
@ -7,7 +7,6 @@ at least theoretically.
|
|||
|
||||
(require (for-syntax racket/base syntax/parse racket/string)
|
||||
racket/require-syntax racket/provide-syntax
|
||||
racket/generic
|
||||
racket/struct-info "timing.rkt")
|
||||
|
||||
;; to move to unstable
|
||||
|
@ -20,8 +19,6 @@ at least theoretically.
|
|||
start-timing do-time
|
||||
;; logging
|
||||
printf/log show-input?
|
||||
;; struct printing
|
||||
define-struct/printer
|
||||
;; provide macros
|
||||
rep utils typecheck infer env private types)
|
||||
|
||||
|
@ -109,20 +106,6 @@ at least theoretically.
|
|||
#'(log-debug (format fmt . args))])
|
||||
#'(void)))
|
||||
|
||||
|
||||
(define-syntax (define-struct/printer stx)
|
||||
(syntax-parse stx
|
||||
[(form name (flds ...) printer:expr)
|
||||
#`(define-struct name (flds ...)
|
||||
#:property prop:custom-print-quotable 'never
|
||||
;; Eta expansion so that printer is not evaluated
|
||||
;; until needed.
|
||||
#:methods gen:custom-write
|
||||
[(define (write-proc v port write?)
|
||||
(printer v port write?))]
|
||||
#:transparent)]))
|
||||
|
||||
|
||||
;; turn contracts on and off - off by default for performance.
|
||||
(provide (for-syntax enable-contracts?)
|
||||
provide/cond-contract
|
||||
|
|
Loading…
Reference in New Issue
Block a user