Don't generate type filters for mutated variables.

original commit: 8d59ee77e4eefca21f2e27140d2b8bcdf691105e
This commit is contained in:
Sam Tobin-Hochstadt 2010-05-13 13:24:41 -04:00
parent 1725a8a95a
commit 7cff4534ab

View File

@ -9,7 +9,7 @@
scheme/match
scheme/promise
scheme/flonum (except-in scheme/contract ->* ->)
unstable/syntax
unstable/syntax unstable/mutated-vars
(prefix-in c: scheme/contract)
(for-syntax scheme/base syntax/parse)
(for-template scheme/base scheme/contract scheme/promise scheme/tcp scheme/flonum))
@ -268,13 +268,13 @@
(d/c (-filter t i [p null])
(c:->* (Type/c name-ref/c) ((listof PathElem?)) Filter/c)
(if (type-equal? Univ t)
(if (or (type-equal? Univ t) (and (identifier? i) (is-var-mutated? i)))
-top
(make-TypeFilter t p i)))
(d/c (-not-filter t i [p null])
(c:->* (Type/c name-ref/c) ((listof PathElem?)) Filter/c)
(if (type-equal? (make-Union null) t)
(if (or (type-equal? (make-Union null) t) (and (identifier? i) (is-var-mutated? i)))
-top
(make-NotTypeFilter t p i)))