summaryrefslogtreecommitdiff
path: root/compiler/vectorise/Vectorise/Monad/InstEnv.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/vectorise/Vectorise/Monad/InstEnv.hs')
-rw-r--r--compiler/vectorise/Vectorise/Monad/InstEnv.hs80
1 files changed, 0 insertions, 80 deletions
diff --git a/compiler/vectorise/Vectorise/Monad/InstEnv.hs b/compiler/vectorise/Vectorise/Monad/InstEnv.hs
deleted file mode 100644
index 64b7441235..0000000000
--- a/compiler/vectorise/Vectorise/Monad/InstEnv.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE CPP #-}
-
-module Vectorise.Monad.InstEnv
- ( existsInst
- , lookupInst
- , lookupFamInst
- )
-where
-
-import Vectorise.Monad.Global
-import Vectorise.Monad.Base
-import Vectorise.Env
-
-import DynFlags
-import FamInstEnv
-import InstEnv
-import Class
-import Type
-import TyCon
-import Outputable
-import Util
-
-
-#include "HsVersions.h"
-
-
--- Check whether a unique class instance for a given class and type arguments exists.
---
-existsInst :: Class -> [Type] -> VM Bool
-existsInst cls tys
- = do { instEnv <- readGEnv global_inst_env
- ; return $ either (const False) (const True) (lookupUniqueInstEnv instEnv cls tys)
- }
-
--- Look up the dfun of a class instance.
---
--- The match must be unique —i.e., match exactly one instance— but the
--- type arguments used for matching may be more specific than those of
--- the class instance declaration. The found class instances must not have
--- any type variables in the instance context that do not appear in the
--- instances head (i.e., no flexi vars); for details for what this means,
--- see the docs at InstEnv.lookupInstEnv.
---
-lookupInst :: Class -> [Type] -> VM (DFunId, [Type])
-lookupInst cls tys
- = do { instEnv <- readGEnv global_inst_env
- ; case lookupUniqueInstEnv instEnv cls tys of
- Right (inst, inst_tys) -> return (instanceDFunId inst, inst_tys)
- Left err ->
- do dflags <- getDynFlags
- cantVectorise dflags "Vectorise.Monad.InstEnv.lookupInst:" err
- }
-
--- Look up a family instance.
---
--- The match must be unique - ie, match exactly one instance - but the
--- type arguments used for matching may be more specific than those of
--- the family instance declaration.
---
--- Return the family instance and its type instance. For example, if we have
---
--- lookupFamInst 'T' '[Int]' yields (':R42T', 'Int')
---
--- then we have a coercion (ie, type instance of family instance coercion)
---
--- :Co:R42T Int :: T [Int] ~ :R42T Int
---
--- which implies that :R42T was declared as 'data instance T [a]'.
---
-lookupFamInst :: TyCon -> [Type] -> VM FamInstMatch
-lookupFamInst tycon tys
- = ASSERT( isOpenFamilyTyCon tycon )
- do { instEnv <- readGEnv global_fam_inst_env
- ; case lookupFamInstEnv instEnv tycon tys of
- [match] -> return match
- _other ->
- do dflags <- getDynFlags
- cantVectorise dflags "Vectorise.Monad.InstEnv.lookupFamInst: not found: "
- (ppr $ mkTyConApp tycon tys)
- }