Move define-struct/printer to new file.

Avoids runtime dependency on `racket/generic`.

original commit: 973da6a50cd0994b69b5b8b7cb1f374786de469f
This commit is contained in:
Sam Tobin-Hochstadt 2012-08-14 10:29:05 -04:00
parent 74b6ccbf6a
commit 88c5098309
3 changed files with 18 additions and 18 deletions

View File

@ -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))

View 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)]))

View File

@ -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