[Git][ghc/ghc][wip/or-pats] refactor

David (@knothed) gitlab at gitlab.haskell.org
Wed Oct 11 14:56:13 UTC 2023



David pushed to branch wip/or-pats at Glasgow Haskell Compiler / GHC


Commits:
5924af3d by David Knothe at 2023-10-11T16:56:04+02:00
refactor

- - - - -


1 changed file:

- compiler/GHC/Parser.y


Changes:

=====================================
compiler/GHC/Parser.y
=====================================
@@ -3113,11 +3113,9 @@ texp :: { ECP }
                              mkHsViewPatPV (comb2 $1 $>) $1 $3 [mu AnnRarrow $2] }
 
 orpats :: { [LPat GhcPs] }
---        : texp                  {% do
         : exp %shift         {% do
                                  { pat1 <- (checkPattern <=< runPV) (unECP $1)
                                  ; return [pat1] }}
---        | texp '|' orpats      {% do
         | exp ';' orpats     {% do
                                  { pat1 <- (checkPattern <=< runPV) (unECP $1)
                                  ; pat2 <- addTrailingSemiA pat1 (getLoc $2)
@@ -3388,14 +3386,15 @@ pat_syn_pat :: { LPat GhcPs }
 pat_syn_pat :  exp          {% (checkPattern <=< runPV) (unECP $1) }
 
 pat     :: { LPat GhcPs }
-pat     :  pat_syn_pat      { $1 }
-        |  pat ';' orpats   {%
-                     do { let srcSpan = comb2 (getLocA $1) (getLocA $ last $3)
-                        ; cs <- getCommentsFor srcSpan
-                        ; pat1 <- addTrailingSemiA $1 (getLoc $2)
-                        ; let orpat = sL (noAnnSrcSpan srcSpan) $ OrPat (EpAnn (spanAsAnchor srcSpan) [] cs) (pat1:$3)
-                        ; _ <- hintOrPats orpat
-                        ; return $ orpat }}
+pat     :  orpats      {% case $1 of
+                            [pat] -> return pat
+                            _ -> do {
+                                  let srcSpan = getLocA $1
+                                ; cs <- getCommentsFor srcSpan
+                                ; let orpat = sL (noAnnSrcSpan srcSpan) $ OrPat (EpAnn (spanAsAnchor srcSpan) [] cs) $1
+                                ; _ <- hintOrPats orpat
+                                ; return orpat }}
+
 
 -- 'pats1' does the same thing as 'pat', but returns it as a singleton
 -- list so that it can be used with a parameterized production rule



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/5924af3de63d8991b9128e94ae6535bfb20dcaca

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/5924af3de63d8991b9128e94ae6535bfb20dcaca
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20231011/3f8d7540/attachment-0001.html>


More information about the ghc-commits mailing list