Remove not-actually-unsafe unsafe operations.
This commit is contained in:
parent
5b57736af6
commit
8f32aad3ee
|
@ -32,9 +32,9 @@
|
|||
(define-struct Rep (seq free-vars free-idxs stx) #:transparent
|
||||
#:methods gen:equal+hash
|
||||
[(define (equal-proc x y recur)
|
||||
(eq? (unsafe-Rep-seq x) (unsafe-Rep-seq y)))
|
||||
(define (hash-proc x recur) (unsafe-Rep-seq x))
|
||||
(define (hash2-proc x recur) (unsafe-Rep-seq x))])
|
||||
(eq? (Rep-seq x) (Rep-seq y)))
|
||||
(define (hash-proc x recur) (Rep-seq x))
|
||||
(define (hash2-proc x recur) (Rep-seq x))])
|
||||
|
||||
;; evil tricks for hygienic yet unhygienic-looking reference
|
||||
;; in say def-type for type-ref-id
|
||||
|
@ -360,11 +360,6 @@
|
|||
[Object def-object #:Object object-case print-object object-name-ht object-rec-id]
|
||||
[PathElem def-pathelem #:PathElem pathelem-case print-pathelem pathelem-name-ht pathelem-rec-id])
|
||||
|
||||
;; NOTE: change these if the definitions above change, or everything will segfault
|
||||
(define-syntax-rule (unsafe-Rep-seq v) (Rep-seq v))
|
||||
(define-syntax-rule (unsafe-Type-key v) (Type-key v))
|
||||
(provide unsafe-Rep-seq unsafe-Type-key)
|
||||
|
||||
(define (Rep-values rep)
|
||||
(match rep
|
||||
[(? (lambda (e) (or (Filter? e)
|
||||
|
|
|
@ -237,8 +237,8 @@
|
|||
;; is s a subtype of t, taking into account previously seen pairs A
|
||||
(define/cond-contract (subtype* A s t)
|
||||
(c:-> (c:listof (c:cons/c fixnum? fixnum?)) Type? Type? c:any/c)
|
||||
(define ss (unsafe-Rep-seq s))
|
||||
(define st (unsafe-Rep-seq t))
|
||||
(define ss (Rep-seq s))
|
||||
(define st (Rep-seq t))
|
||||
(early-return
|
||||
#:return-when (or (eq? ss st) (seen? ss st A)) A
|
||||
(define cr (let ([inner (hash-ref subtype-cache st #f)])
|
||||
|
@ -246,8 +246,8 @@
|
|||
(hash-ref inner ss 'missing)
|
||||
'missing)))
|
||||
#:return-when (boolean? cr) (and cr A)
|
||||
(define ks (unsafe-Type-key s))
|
||||
(define kt (unsafe-Type-key t))
|
||||
(define ks (Type-key s))
|
||||
(define kt (Type-key t))
|
||||
#:return-when (and (symbol? ks) (symbol? kt) (not (eq? ks kt))) #f
|
||||
#:return-when (and (symbol? ks) (pair? kt) (not (memq ks kt))) #f
|
||||
#:return-when
|
||||
|
|
Loading…
Reference in New Issue
Block a user