From 17a3d0944e79d34c4e69e57c99f4f3edefc9fdf9 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Thu, 4 Jun 2009 14:38:59 +0000 Subject: [PATCH] hash table keys are contravariant, not covariant svn: r15077 original commit: e14e58c8df07a874c5a9093c9453de92f3ab04f2 --- collects/tests/typed-scheme/unit-tests/typecheck-tests.ss | 3 +++ collects/typed-scheme/infer/infer-unit.ss | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/collects/tests/typed-scheme/unit-tests/typecheck-tests.ss b/collects/tests/typed-scheme/unit-tests/typecheck-tests.ss index 848b2f87..6f258618 100644 --- a/collects/tests/typed-scheme/unit-tests/typecheck-tests.ss +++ b/collects/tests/typed-scheme/unit-tests/typecheck-tests.ss @@ -724,6 +724,9 @@ (andmap null? (map list y))) (-polydots (a) ((list -Number) (a a) . ->... . -Boolean))] [tc-e (ann (error 'foo) (values Number Number)) #:ret (ret (list -Number -Number))] + + [tc-e #{(make-hash) :: (HashTable Number Number)} + (make-Hashtable -Number -Number)] #;[tc-err (let: ([fact : (Number -> Number) (lambda: ([n : Number]) (if (zero? n) 1 (* n (fact (- n 1)))))]) (fact 20))] diff --git a/collects/typed-scheme/infer/infer-unit.ss b/collects/typed-scheme/infer/infer-unit.ss index bb9f7b0b..893f59cd 100644 --- a/collects/typed-scheme/infer/infer-unit.ss +++ b/collects/typed-scheme/infer/infer-unit.ss @@ -386,8 +386,8 @@ [((Box: e) (Box: e*)) (cset-meet (cg e e*) (cg e* e))] [((Hashtable: s1 s2) (Hashtable: t1 t2)) - ;; the key is covariant, the value is invariant - (cset-meet* (list (cg s1 t1) (cg t2 s2) (cg s2 t2)))] + ;; the key is contravariant, the value is invariant + (cset-meet* (list (cg t1 s1) (cg t2 s2) (cg s2 t2)))] [((Syntax: s1) (Syntax: s2)) (cg s1 s2)] ;; parameters are just like one-arg functions