parent
d9b680dbf5
commit
aa025b9c56
|
@ -26,7 +26,7 @@
|
||||||
(require (for-template racket/base
|
(require (for-template racket/base
|
||||||
"internal-forms.rkt"))
|
"internal-forms.rkt"))
|
||||||
|
|
||||||
(provide tc/struct names-of-struct d-s
|
(provide tc/struct name-of-struct d-s
|
||||||
refine-struct-variance!
|
refine-struct-variance!
|
||||||
register-parsed-struct-sty!
|
register-parsed-struct-sty!
|
||||||
register-parsed-struct-bindings!)
|
register-parsed-struct-bindings!)
|
||||||
|
@ -59,9 +59,7 @@
|
||||||
(define (struct-desc-parent-count fields)
|
(define (struct-desc-parent-count fields)
|
||||||
(length (struct-desc-parent-fields fields)))
|
(length (struct-desc-parent-fields fields)))
|
||||||
|
|
||||||
|
(define (name-of-struct stx)
|
||||||
;; TODO make this not return a list
|
|
||||||
(define (names-of-struct stx)
|
|
||||||
(syntax-parse stx
|
(syntax-parse stx
|
||||||
#:literal-sets (kernel-literals)
|
#:literal-sets (kernel-literals)
|
||||||
#:literals (define-typed-struct-internal values)
|
#:literals (define-typed-struct-internal values)
|
||||||
|
@ -73,7 +71,7 @@
|
||||||
(define-typed-struct/exec-internal
|
(define-typed-struct/exec-internal
|
||||||
nm/par:parent . rest)))
|
nm/par:parent . rest)))
|
||||||
(#%plain-app values)))
|
(#%plain-app values)))
|
||||||
(list #'nm/par.name)]))
|
#'nm/par.name]))
|
||||||
|
|
||||||
|
|
||||||
;; parse name field of struct, determining whether a parent struct was specified
|
;; parse name field of struct, determining whether a parent struct was specified
|
||||||
|
|
|
@ -278,10 +278,6 @@
|
||||||
[(define-syntaxes (nm ...) . rest) (syntax->list #'(nm ...))]
|
[(define-syntaxes (nm ...) . rest) (syntax->list #'(nm ...))]
|
||||||
[_ #f]))
|
[_ #f]))
|
||||||
|
|
||||||
|
|
||||||
(define (add-type-name! names)
|
|
||||||
(for-each register-type-name names))
|
|
||||||
|
|
||||||
(define (parse-type-alias form)
|
(define (parse-type-alias form)
|
||||||
(kernel-syntax-case* form #f
|
(kernel-syntax-case* form #f
|
||||||
(define-type-alias-internal values)
|
(define-type-alias-internal values)
|
||||||
|
@ -309,7 +305,7 @@
|
||||||
(for-each (compose register-type-alias parse-type-alias) type-aliases)
|
(for-each (compose register-type-alias parse-type-alias) type-aliases)
|
||||||
;; Add the struct names to the type table, but not with a type
|
;; Add the struct names to the type table, but not with a type
|
||||||
;(printf "before adding type names~n")
|
;(printf "before adding type names~n")
|
||||||
(for-each (compose add-type-name! names-of-struct) struct-defs)
|
(for-each (compose register-type-name name-of-struct) struct-defs)
|
||||||
(for-each add-constant-variance! struct-defs)
|
(for-each add-constant-variance! struct-defs)
|
||||||
;(printf "after adding type names~n")
|
;(printf "after adding type names~n")
|
||||||
;; resolve all the type aliases, and error if there are cycles
|
;; resolve all the type aliases, and error if there are cycles
|
||||||
|
|
Loading…
Reference in New Issue
Block a user