From c19fac7fd5f988afdf1c7198297566a0492f60fe Mon Sep 17 00:00:00 2001 From: Stephen Chang Date: Fri, 5 Feb 2016 18:26:03 -0500 Subject: [PATCH] add ids from in-hash- expansion to special-env - fixes test failures due to https://github.com/racket/racket/commit/048c4b4a7338027994d81dd77785b44fb8bceaa2 - add in-hash- tests --- .../base-env/base-special-env.rkt | 16 ++++++++++++++++ .../special-env-typecheck-tests.rkt | 1 + .../unit-tests/typecheck-tests.rkt | 19 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/typed-racket-lib/typed-racket/base-env/base-special-env.rkt b/typed-racket-lib/typed-racket/base-env/base-special-env.rkt index 18e5280a..0c4f4f86 100644 --- a/typed-racket-lib/typed-racket/base-env/base-special-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-special-env.rkt @@ -132,6 +132,22 @@ (-poly (a b) (cl-> [((-HT a b)) (-seq (-pair a b))] [(-HashTop) (-seq (-pair Univ Univ))]))] + [(make-template-identifier 'default-in-hash-key+values 'racket/private/for) + (-poly (a b) + (cl-> [((-HT a b)) (-seq a b)] + [(-HashTop) (-seq Univ Univ)]))] + [(make-template-identifier 'default-in-hash-keys 'racket/private/for) + (-poly (a b) + (cl-> [((-HT a b)) (-seq a)] + [(-HashTop) (-seq Univ)]))] + [(make-template-identifier 'default-in-hash-values 'racket/private/for) + (-poly (a b) + (cl-> [((-HT a b)) (-seq b)] + [(-HashTop) (-seq Univ)]))] + [(make-template-identifier 'default-in-hash-pairs 'racket/private/for) + (-poly (a b) + (cl-> [((-HT a b)) (-seq (-pair a b))] + [(-HashTop) (-seq (-pair Univ Univ))]))] ;; in-port [(make-template-identifier 'in-port 'racket/private/for) (->opt [(-> -Input-Port Univ) -Input-Port] (-seq Univ))] diff --git a/typed-racket-test/unit-tests/special-env-typecheck-tests.rkt b/typed-racket-test/unit-tests/special-env-typecheck-tests.rkt index 7c3b7b55..c93e0319 100644 --- a/typed-racket-test/unit-tests/special-env-typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/special-env-typecheck-tests.rkt @@ -59,6 +59,7 @@ [tc-e (in-hash #hash((1 . 2))) (-seq -Integer -Integer)] [tc-e (in-hash-keys #hash((1 . 2))) (-seq -Integer)] [tc-e (in-hash-values #hash((1 . 2))) (-seq -Integer)] + [tc-e (in-hash-pairs #hash((1 . 2))) (-seq (-pair -Integer -Integer))] (tc-e (file->string "tmp") -String) (tc-e (file->string "tmp" #:mode 'binary) -String) diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 0589bc1b..9c9932c7 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -2535,6 +2535,19 @@ (values v k))) h) (-HT Univ Univ)] + [tc-e/t (let () + (tr:define h : (HashTable Any Any) + (for/hash ([k (in-hash-keys #hash(("a" . a)))] + [v (in-hash-values #hash(("a" . a)))]) + (values v k))) + h) + (-HT Univ Univ)] + [tc-e/t (let () + (tr:define h : (HashTable Any Any) + (for/hash ([k+v (in-hash-pairs #hash(("a" . a)))]) + (values (cdr k+v) (car k+v)))) + h) + (-HT Univ Univ)] ;; call-with-input-string and friends - PR 14050 [tc-e (call-with-input-string "abcd" (lambda: ([input : Input-Port]) (values 'a 'b))) @@ -3838,6 +3851,12 @@ [tc-e (ann (in-hash (hash)) (Sequenceof Any Any)) (-seq Univ Univ)] + [tc-e (ann (in-hash-keys (hash)) (Sequenceof Any)) + (-seq Univ)] + [tc-e (ann (in-hash-values (hash)) (Sequenceof Any)) + (-seq Univ)] + [tc-e (ann (in-hash-pairs (hash)) (Sequenceof (Pairof Any Any))) + (-seq (-pair Univ Univ))] ) (test-suite