summaryrefslogtreecommitdiff
path: root/compiler/GHC/Parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Parser.y')
-rw-r--r--compiler/GHC/Parser.y16
1 files changed, 9 insertions, 7 deletions
diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index fc546c515d..2b259354e5 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -2788,7 +2788,7 @@ aexp :: { ECP }
unECP $2 >>= \ $2 ->
mkHsNegAppPV (comb2A $1 $>) $2 [mj AnnMinus $1] }
- | '\\' apats '->' exp
+ | '\\' matchpats '->' exp
{ ECP $
unECP $4 >>= \ $4 ->
mkHsLamPV (comb2 $1 (reLoc $>)) (\cs -> mkMatchGroup FromSource
@@ -3243,7 +3243,7 @@ alt :: { forall b. DisambECP b => PV (LMatch GhcPs (LocatedA b)) }
acsA (\cs -> sLL (reLoc $1) $>
(Match { m_ext = (EpAnn (glAR $1) [] cs)
, m_ctxt = CaseAlt
- , m_pats = [$1]
+ , m_pats = [L noSrcSpanA (VisPat noExtField $1)]
, m_grhss = unLoc $2 }))}
alt_rhs :: { forall b. DisambECP b => PV (Located (GRHSs GhcPs (LocatedA b))) }
@@ -3289,12 +3289,14 @@ bindpat : exp {% -- See Note [Parser-Validator Details] in GHC.Parse
checkPattern_details incompleteDoBlock
(unECP $1) }
-apat :: { LPat GhcPs }
-apat : aexp {% (checkPattern <=< runPV) (unECP $1) }
+matchpat :: { LMatchPat GhcPs }
+matchpat : aexp {% (fmap mkVisPat . checkPattern <=< runPV) (unECP $1) }
+ | PREFIX_AT tyvar { (L noSrcSpanA (InvisTyVarPat noAnn $2)) }
+ | PREFIX_AT '_' { (L noSrcSpanA (InvisWildTyPat noExtField)) }
-apats :: { [LPat GhcPs] }
- : apat apats { $1 : $2 }
- | {- empty -} { [] }
+matchpats :: { [LMatchPat GhcPs] }
+ : matchpat matchpats { $1 : $2 }
+ | {- empty -} { [] }
-----------------------------------------------------------------------------
-- Statement sequences