From d4b980043211a2b1e7a24a6efd9e21e9853dcde0 Mon Sep 17 00:00:00 2001 From: simonpj Date: Thu, 11 Mar 2004 14:29:59 +0000 Subject: [PATCH] [project @ 2004-03-11 14:29:59 by simonpj] Add sanity check --- ghc/compiler/types/InstEnv.lhs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ghc/compiler/types/InstEnv.lhs b/ghc/compiler/types/InstEnv.lhs index cc75492..905cde2 100644 --- a/ghc/compiler/types/InstEnv.lhs +++ b/ghc/compiler/types/InstEnv.lhs @@ -299,7 +299,10 @@ lookup_inst_env env key_cls key_tys Nothing -- Does not match, so next check whether the things unify -- [see notes about overlapping instances above] - -> case unifyTyListsX (key_vars `unionVarSet` tpl_tyvars) key_tys tpl of + -> ASSERT( not (key_vars `intersectsVarSet` tpl_tyvars) ) + -- Unification will break badly if the variables overlap + -- They shouldn't because we allocate separate uniques for them + case unifyTyListsX (key_vars `unionVarSet` tpl_tyvars) key_tys tpl of Just _ -> find rest ms (dfun_id:us) Nothing -> find rest ms us -- 1.7.10.4