Remove not-actually-unsafe unsafe operations.

This commit is contained in:
Vincent St-Amour 2015-11-03 14:34:39 -06:00
parent 5b57736af6
commit 8f32aad3ee
2 changed files with 7 additions and 12 deletions

View File

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

View File

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