summaryrefslogtreecommitdiff
path: root/compiler/GHC/HsToCore/PmCheck/Oracle.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/HsToCore/PmCheck/Oracle.hs')
-rw-r--r--compiler/GHC/HsToCore/PmCheck/Oracle.hs12
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler/GHC/HsToCore/PmCheck/Oracle.hs b/compiler/GHC/HsToCore/PmCheck/Oracle.hs
index fd76bcf70d..ee845c34be 100644
--- a/compiler/GHC/HsToCore/PmCheck/Oracle.hs
+++ b/compiler/GHC/HsToCore/PmCheck/Oracle.hs
@@ -44,6 +44,7 @@ import GHC.Types.Unique.DSet
import GHC.Types.Unique.DFM
import GHC.Types.Id
import GHC.Types.Name
+import GHC.Types.Name.Reader (GlobalRdrEnv, lookupGRE_Name)
import GHC.Types.Var (EvVar)
import GHC.Types.Var.Env
import GHC.Types.Var.Set
@@ -1737,11 +1738,16 @@ generateInhabitingPatterns (x:xs) n nabla = do
pickApplicableCompleteSets :: Type -> ResidualCompleteMatches -> DsM [ConLikeSet]
pickApplicableCompleteSets ty rcm = do
+ gre <- dsGetGlobalRdrEnv
env <- dsGetFamInstEnvs
- pure $ filter (all (is_valid env) . uniqDSetToList) (getRcm rcm)
+ pure $ filter (all (is_valid gre env) . uniqDSetToList) (getRcm rcm)
where
- is_valid :: FamInstEnvs -> ConLike -> Bool
- is_valid env cl = isJust (guessConLikeUnivTyArgsFromResTy env ty cl)
+ is_valid :: GlobalRdrEnv -> FamInstEnvs -> ConLike -> Bool
+ is_valid gre env cl = isJust (guessConLikeUnivTyArgsFromResTy env ty cl)
+ && isJust (lookupGRE_Name gre (conLikeName cl))
+ -- filter out ConLikes that the User can't write,
+ -- because they aren't imported or not even
+ -- exported. This is #13964.
{- Note [Why inhabitationTest doesn't call generateInhabitingPatterns]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~