summaryrefslogtreecommitdiff
path: root/compiler/GHC/HsToCore/Utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/HsToCore/Utils.hs')
-rw-r--r--compiler/GHC/HsToCore/Utils.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/GHC/HsToCore/Utils.hs b/compiler/GHC/HsToCore/Utils.hs
index 8623a628f3..7c452887f1 100644
--- a/compiler/GHC/HsToCore/Utils.hs
+++ b/compiler/GHC/HsToCore/Utils.hs
@@ -322,8 +322,9 @@ mkCoSynCaseMatchResult var ty alt = MR_Fallible $ mkPatSynCase var ty alt
mkPatSynCase :: Id -> Type -> CaseAlt PatSyn -> CoreExpr -> DsM CoreExpr
mkPatSynCase var ty alt fail = do
+ matcher_id <- dsLookupGlobalId matcher_name
matcher <- dsLExpr $ mkLHsWrap wrapper $
- nlHsTyApp matcher [getRuntimeRep ty, ty]
+ nlHsTyApp matcher_id [getRuntimeRep ty, ty]
cont <- mkCoreLams bndrs <$> runMatchResult fail match_result
return $ mkCoreAppsDs (text "patsyn" <+> ppr var) matcher [Var var, ensure_unstrict cont, Lam voidArgId fail]
where
@@ -331,7 +332,7 @@ mkPatSynCase var ty alt fail = do
alt_bndrs = bndrs,
alt_wrapper = wrapper,
alt_result = match_result} = alt
- (matcher, needs_void_lam) = patSynMatcher psyn
+ (matcher_name, _, needs_void_lam) = patSynMatcher psyn
-- See Note [Matchers and builders for pattern synonyms] in GHC.Core.PatSyn
-- on these extra Void# arguments