[Git][ghc/ghc][master] EPA: Remove AddEpann commit 7

Marge Bot (@marge-bot) gitlab at gitlab.haskell.org
Sat Oct 26 16:44:32 UTC 2024



Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC


Commits:
dbc77ce8 by Alan Zimmerman at 2024-10-25T18:20:13+01:00
EPA: Remove AddEpann commit 7

EPA: Remove [AddEpAnn] from HYPHEN in Parser.y

The return value is never used, as it is part of the backpack
configuration parsing.

EPA: Remove last [AddEpAnn] usages

Remove residual usage in GHC. It is still used
- In haddock TTG extension point definitions (to be removed)
- Some check-exact residual, to be removed
- Comments around DisambECP in PostProcess

EPA: Clean up [AddEpAnn] from check-exact

There is one left, to be cleaned up when we remove AddEpann itself

EPA: Remove [AddEpAnn] from haddock

The TTG extension points need a value, it is not critical what that
value is, in most cases.

EPA: Remove AddEpAnn from HsRuleAnn

EPA: Remove AddEpAnn from HsCmdArrApp

- - - - -


8 changed files:

- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Dump.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Parser.y
- compiler/GHC/Parser/Annotation.hs
- compiler/GHC/Parser/PostProcess.hs
- utils/check-exact/ExactPrint.hs
- utils/haddock/haddock-api/src/Haddock/Types.hs


Changes:

=====================================
compiler/GHC/Hs/Decls.hs
=====================================
@@ -1326,12 +1326,8 @@ type instance XXRuleDecl    (GhcPass _) = DataConCantHappen
 
 data HsRuleAnn
   = HsRuleAnn
-       { ra_tyanns :: Maybe (AddEpAnn, AddEpAnn)
-                 -- ^ The locations of 'forall' and '.' for forall'd type vars
-                 -- Using AddEpAnn to capture possible unicode variants
-       , ra_tmanns :: Maybe (AddEpAnn, AddEpAnn)
-                 -- ^ The locations of 'forall' and '.' for forall'd term vars
-                 -- Using AddEpAnn to capture possible unicode variants
+       { ra_tyanns :: Maybe (TokForall, EpToken ".")
+       , ra_tmanns :: Maybe (TokForall, EpToken ".")
        , ra_equal  :: EpToken "="
        , ra_rest :: ActivationAnn
        } deriving (Data, Eq)


=====================================
compiler/GHC/Hs/Dump.hs
=====================================
@@ -59,7 +59,6 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0
     showAstData' =
       generic
               `ext1Q` list
-              `extQ` list_addEpAnn
               `extQ` list_epaLocation
               `extQ` list_epTokenOpenP
               `extQ` list_epTokenCloseP
@@ -116,12 +115,6 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0
             bytestring :: B.ByteString -> SDoc
             bytestring = text . normalize_newlines . show
 
-            list_addEpAnn :: [AddEpAnn] -> SDoc
-            list_addEpAnn ls = case ba of
-              BlankEpAnnotations -> parens
-                                       $ text "blanked:" <+> text "[AddEpAnn]"
-              NoBlankEpAnnotations -> list ls
-
             list_epaLocation :: [EpaLocation] -> SDoc
             list_epaLocation ls = case ba of
               BlankEpAnnotations -> parens


=====================================
compiler/GHC/Hs/Expr.hs
=====================================
@@ -1330,7 +1330,7 @@ names 'getField' and 'setField' are whatever in-scope names they are.
 ************************************************************************
 -}
 
-type instance XCmdArrApp  GhcPs = AddEpAnn
+type instance XCmdArrApp  GhcPs = (IsUnicodeSyntax, EpaLocation)
 type instance XCmdArrApp  GhcRn = NoExtField
 type instance XCmdArrApp  GhcTc = Type
 


=====================================
compiler/GHC/Parser.y
=====================================
@@ -838,14 +838,10 @@ litpkgname_segment :: { Located FastString }
 
 -- Parse a minus sign regardless of whether -XLexicalNegation is turned on or off.
 -- See Note [Minus tokens] in GHC.Parser.Lexer
-HYPHEN :: { [AddEpAnn] }
-      : '-'          { [mj AnnMinus $1 ] }
-      | PREFIX_MINUS { [mj AnnMinus $1 ] }
-      | VARSYM  {% if (getVARSYM $1 == fsLit "-")
-                   then return [mj AnnMinus $1]
-                   else do { addError $ mkPlainErrorMsgEnvelope (getLoc $1) $ PsErrExpectedHyphen
-                           ; return [] } }
-
+HYPHEN :: { () }
+      : '-'          { () }
+      | PREFIX_MINUS { () }
+      | VARSYM       { () }
 
 litpkgname :: { Located FastString }
         : litpkgname_segment { $1 }
@@ -1974,11 +1970,11 @@ rule_foralls :: { (EpToken "=" -> ActivationAnn -> HsRuleAnn, Maybe [LHsTyVarBnd
                                                               in hintExplicitForall $1
                                                               >> checkRuleTyVarBndrNames (mkRuleTyVarBndrs $2)
                                                               >> return (\an_eq an_act -> HsRuleAnn
-                                                                          (Just (mu AnnForall $1,mj AnnDot $3))
-                                                                          (Just (mu AnnForall $4,mj AnnDot $6))
+                                                                          (Just (epUniTok $1,epTok $3))
+                                                                          (Just (epUniTok $4,epTok $6))
                                                                           an_eq an_act,
                                                                          Just (mkRuleTyVarBndrs $2), mkRuleBndrs $5) }
-        | 'forall' rule_vars '.'                           { (\an_eq an_act -> HsRuleAnn Nothing (Just (mu AnnForall $1,mj AnnDot $3)) an_eq an_act,
+        | 'forall' rule_vars '.'                           { (\an_eq an_act -> HsRuleAnn Nothing (Just (epUniTok $1,epTok $3)) an_eq an_act,
                                                               Nothing, mkRuleBndrs $2) }
         -- See Note [%shift: rule_foralls -> {- empty -}]
         | {- empty -}            %shift                    { (\an_eq an_act -> HsRuleAnn Nothing Nothing an_eq an_act, Nothing, []) }
@@ -2824,25 +2820,25 @@ exp_gen(IEXP) :: { ECP }
                                 {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu Annlarrowtail $2) $1 $3
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (isUnicodeSyntax $2, glR $2) $1 $3
                                                         HsFirstOrderApp True) }
         | IEXP '>-' exp_gen(IEXP)
                                 {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu Annrarrowtail $2) $3 $1
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (isUnicodeSyntax $2, glR $2) $3 $1
                                                       HsFirstOrderApp False) }
         | IEXP '-<<' exp_gen(IEXP)
                                 {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu AnnLarrowtail $2) $1 $3
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (isUnicodeSyntax $2, glR $2) $1 $3
                                                       HsHigherOrderApp True) }
         | IEXP '>>-' exp_gen(IEXP)
                                 {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu AnnRarrowtail $2) $3 $1
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (isUnicodeSyntax $2, glR $2) $3 $1
                                                       HsHigherOrderApp False) }
         -- See Note [%shift: exp -> infixexp]
         | IEXP %shift              { $1 }
@@ -4726,7 +4722,7 @@ addTrailingCommaN (L anns a) span = do
 
 addTrailingCommaS :: Located StringLiteral -> EpaLocation -> Located StringLiteral
 addTrailingCommaS (L l sl) span
-    = L (widenSpan l [AddEpAnn AnnComma span]) (sl { sl_tc = Just (epaToNoCommentsLocation span) })
+    = L (widenSpanL l [span]) (sl { sl_tc = Just (epaToNoCommentsLocation span) })
 
 -- -------------------------------------
 
@@ -4738,6 +4734,9 @@ addTrailingDarrowC (L (EpAnn lr (AnnContext _ o c) csc) a) lt cs =
 
 -- -------------------------------------
 
+isUnicodeSyntax :: Located Token -> IsUnicodeSyntax
+isUnicodeSyntax lt = if isUnicode lt then UnicodeSyntax else NormalSyntax
+
 -- We need a location for the where binds, when computing the SrcSpan
 -- for the AST element using them.  Where there is a span, we return
 -- it, else noLoc, which is ignored in the comb2 call.


=====================================
compiler/GHC/Parser/Annotation.hs
=====================================
@@ -69,13 +69,12 @@ module GHC.Parser.Annotation (
 
   -- ** Building up annotations
   reAnnL, reAnnC,
-  addAnns, addAnnsA, widenSpan, widenSpanL, widenSpanT, widenAnchor, widenAnchorT, widenAnchorS,
-  widenLocatedAn, widenLocatedAnL,
+  addAnnsA, widenSpanL, widenSpanT, widenAnchorT, widenAnchorS,
+  widenLocatedAnL,
   listLocation,
 
   -- ** Querying annotations
   getLocAnn,
-  annParen2AddEpAnn,
   epAnnComments,
 
   -- ** Working with locations of annotations
@@ -1116,25 +1115,11 @@ reAnnL anns cs (L l a) = L (EpAnn (spanAsAnchor l) anns cs) a
 getLocAnn :: Located a  -> SrcSpanAnnA
 getLocAnn (L l _) = noAnnSrcSpan l
 
-addAnns :: EpAnn [AddEpAnn] -> [AddEpAnn] -> EpAnnComments -> EpAnn [AddEpAnn]
-addAnns (EpAnn l as1 cs) as2 cs2
-  = EpAnn (widenAnchor l (as1 ++ as2)) (as1 ++ as2) (cs <> cs2)
-
 -- AZ:TODO use widenSpan here too
 addAnnsA :: SrcSpanAnnA -> [TrailingAnn] -> EpAnnComments -> SrcSpanAnnA
 addAnnsA (EpAnn l as1 cs) as2 cs2
   = EpAnn l (AnnListItem (lann_trailing as1 ++ as2)) (cs <> cs2)
 
--- | The annotations need to all come after the anchor.  Make sure
--- this is the case.
-widenSpan :: SrcSpan -> [AddEpAnn] -> SrcSpan
-widenSpan s as = foldl combineSrcSpans s (go as)
-  where
-    go [] = []
-    go (AddEpAnn _ (EpaSpan (RealSrcSpan s mb)):rest) = RealSrcSpan s mb : go rest
-    go (AddEpAnn _ (EpaSpan _):rest) = go rest
-    go (AddEpAnn _ (EpaDelta _ _ _):rest) = go rest
-
 -- | The annotations need to all come after the anchor.  Make sure
 -- this is the case.
 widenSpanL :: SrcSpan -> [EpaLocation] -> SrcSpan
@@ -1149,35 +1134,6 @@ widenSpanT :: SrcSpan -> EpToken tok -> SrcSpan
 widenSpanT l (EpTok loc) = widenSpanL l [loc]
 widenSpanT l NoEpTok = l
 
--- | The annotations need to all come after the anchor.  Make sure
--- this is the case.
-widenRealSpan :: RealSrcSpan -> [AddEpAnn] -> RealSrcSpan
-widenRealSpan s as = foldl combineRealSrcSpans s (go as)
-  where
-    go [] = []
-    go (AddEpAnn _ (EpaSpan (RealSrcSpan s _)):rest) = s : go rest
-    go (AddEpAnn _ _:rest) = go rest
-
-realSpanFromAnns :: [AddEpAnn] -> Strict.Maybe RealSrcSpan
-realSpanFromAnns as = go Strict.Nothing as
-  where
-    combine Strict.Nothing r  = Strict.Just r
-    combine (Strict.Just l) r = Strict.Just $ combineRealSrcSpans l r
-
-    go acc [] = acc
-    go acc (AddEpAnn _ (EpaSpan (RealSrcSpan s _b)):rest) = go (combine acc s) rest
-    go acc (AddEpAnn _ _             :rest) = go acc rest
-
-bufSpanFromAnns :: [AddEpAnn] -> Strict.Maybe BufSpan
-bufSpanFromAnns as =  go Strict.Nothing as
-  where
-    combine Strict.Nothing r  = Strict.Just r
-    combine (Strict.Just l) r = Strict.Just $ combineBufSpans l r
-
-    go acc [] = acc
-    go acc (AddEpAnn _ (EpaSpan (RealSrcSpan _ (Strict.Just mb))):rest) = go (combine acc mb) rest
-    go acc (AddEpAnn _ _:rest) = go acc rest
-
 listLocation :: [LocatedAn an a] -> EpaLocation
 listLocation as = EpaSpan (go noSrcSpan as)
   where
@@ -1187,14 +1143,6 @@ listLocation as = EpaSpan (go noSrcSpan as)
     go acc (L (EpAnn (EpaSpan s) _ _) _:rest) = go (combine acc s) rest
     go acc (_:rest) = go acc rest
 
-widenAnchor :: EpaLocation -> [AddEpAnn] -> EpaLocation
-widenAnchor (EpaSpan (RealSrcSpan s mb)) as
-  = EpaSpan (RealSrcSpan (widenRealSpan s as) (liftA2 combineBufSpans mb  (bufSpanFromAnns as)))
-widenAnchor (EpaSpan us) _ = EpaSpan us
-widenAnchor a at EpaDelta{} as = case (realSpanFromAnns as) of
-                                    Strict.Nothing -> a
-                                    Strict.Just r -> EpaSpan (RealSrcSpan r Strict.Nothing)
-
 widenAnchorT :: EpaLocation -> EpToken tok -> EpaLocation
 widenAnchorT (EpaSpan ss) (EpTok l) = widenAnchorS l ss
 widenAnchorT ss _ = ss
@@ -1206,24 +1154,12 @@ widenAnchorS (EpaSpan us) _ = EpaSpan us
 widenAnchorS EpaDelta{} (RealSrcSpan r mb) = EpaSpan (RealSrcSpan r mb)
 widenAnchorS anc _ = anc
 
-widenLocatedAn :: EpAnn an -> [AddEpAnn] -> EpAnn an
-widenLocatedAn (EpAnn (EpaSpan l) a cs) as = EpAnn (spanAsAnchor l') a cs
-  where
-    l' = widenSpan l as
-widenLocatedAn (EpAnn anc a cs) _as = EpAnn anc a cs
-
 widenLocatedAnL :: EpAnn an -> [EpaLocation] -> EpAnn an
 widenLocatedAnL (EpAnn (EpaSpan l) a cs) as = EpAnn (spanAsAnchor l') a cs
   where
     l' = widenSpanL l as
 widenLocatedAnL (EpAnn anc a cs) _as = EpAnn anc a cs
 
-annParen2AddEpAnn :: AnnParen -> [AddEpAnn]
-annParen2AddEpAnn (AnnParen pt o c)
-  = [AddEpAnn ai o, AddEpAnn ac c]
-  where
-    (ai,ac) = parenTypeKws pt
-
 epAnnComments :: EpAnn an -> EpAnnComments
 epAnnComments (EpAnn _ _ cs) = cs
 


=====================================
compiler/GHC/Parser/PostProcess.hs
=====================================
@@ -984,7 +984,7 @@ checkTyVars pp_what equals_or_where tc tparms
       = Just (noAnn, HsBndrWildCard noExtField)
     match_bndr_var _ = Nothing
 
-    -- Return an AddEpAnn for use in widenLocatedAn. The AnnKeywordId is not used.
+    -- Return an AddEpAnn for use in widenLocatedAnL. The AnnKeywordId is not used.
     for_widening :: HsBndrVis GhcPs -> EpaLocation
     for_widening (HsBndrInvisible (EpTok loc)) = loc
     for_widening  _                            = noAnn
@@ -1524,9 +1524,7 @@ isFunLhs e = go e [] [] []
    go (L l (PatBuilderAppType (L lp pat) tok ty_pat@(HsTP _ (L (EpAnn anc ann cs) _)))) es ops cps
              = go (L lp' pat) (L (EpAnn anc' ann cs) (ArgPatBuilderArgPat invis_pat) : es) ops cps
              where invis_pat = InvisPat (tok, SpecifiedSpec) ty_pat
-                   anc' = case tok of
-                     NoEpTok -> anc
-                     EpTok l -> widenAnchor anc [AddEpAnn AnnAnyclass l]
+                   anc' = widenAnchorT anc tok
                    (_l, lp') = transferCommentsOnlyA l lp
    go _ _ _ _ = return Nothing
 


=====================================
utils/check-exact/ExactPrint.hs
=====================================
@@ -268,10 +268,6 @@ instance HasTrailing AddEpAnn where
   trailing _ = []
   setTrailing a _ = a
 
-instance HasTrailing [AddEpAnn] where
-  trailing _ = []
-  setTrailing a _ = a
-
 instance HasTrailing (AddEpAnn, AddEpAnn) where
   trailing _ = []
   setTrailing a _ = a
@@ -1025,10 +1021,6 @@ lal_rest k parent = fmap (\new -> parent { al_rest = new })
 
 -- -------------------------------------
 
-lidl :: Lens [AddEpAnn] [AddEpAnn]
-lidl k parent = fmap (\new -> new)
-                     (k parent)
-
 lid :: Lens a a
 lid k parent = fmap (\new -> new)
                     (k parent)
@@ -1156,17 +1148,13 @@ lhsCaseAnnOf k parent = fmap (\new -> parent { hsCaseAnnOf = new })
 
 -- data HsRuleAnn
 --   = HsRuleAnn
---        { ra_tyanns :: Maybe (AddEpAnn, AddEpAnn)
---                  -- ^ The locations of 'forall' and '.' for forall'd type vars
---                  -- Using AddEpAnn to capture possible unicode variants
---        , ra_tmanns :: Maybe (AddEpAnn, AddEpAnn)
---                  -- ^ The locations of 'forall' and '.' for forall'd term vars
---                  -- Using AddEpAnn to capture possible unicode variants
+--        { ra_tyanns :: Maybe (TokForall, EpToken ".")
+--        , ra_tmanns :: Maybe (TokForall, EpToken ".")
 --        , ra_equal  :: EpToken "="
 --        , ra_rest :: ActivationAnn
 --        } deriving (Data, Eq)
 
-lra_tyanns :: Lens HsRuleAnn (Maybe (AddEpAnn, AddEpAnn))
+lra_tyanns :: Lens HsRuleAnn (Maybe (TokForall, EpToken "."))
 lra_tyanns k parent = fmap (\new -> parent { ra_tyanns = new })
                                (k (ra_tyanns parent))
 
@@ -1185,20 +1173,20 @@ lff k parent = fmap (\new -> gg new)
                     (k (ff parent))
 
 -- (.) :: Lens' a b -> Lens' b c -> Lens' a c
-lra_tyanns_fst :: Lens HsRuleAnn (Maybe AddEpAnn)
+lra_tyanns_fst :: Lens HsRuleAnn (Maybe TokForall)
 lra_tyanns_fst = lra_tyanns . lff . lfst
 
-lra_tyanns_snd :: Lens HsRuleAnn (Maybe AddEpAnn)
+lra_tyanns_snd :: Lens HsRuleAnn (Maybe (EpToken "."))
 lra_tyanns_snd = lra_tyanns . lff . lsnd
 
-lra_tmanns :: Lens HsRuleAnn (Maybe (AddEpAnn, AddEpAnn))
+lra_tmanns :: Lens HsRuleAnn (Maybe (TokForall, EpToken "."))
 lra_tmanns k parent = fmap (\new -> parent { ra_tmanns = new })
                                (k (ra_tmanns parent))
 
-lra_tmanns_fst :: Lens HsRuleAnn (Maybe AddEpAnn)
+lra_tmanns_fst :: Lens HsRuleAnn (Maybe TokForall)
 lra_tmanns_fst = lra_tmanns . lff . lfst
 
-lra_tmanns_snd :: Lens HsRuleAnn (Maybe AddEpAnn)
+lra_tmanns_snd :: Lens HsRuleAnn (Maybe (EpToken "."))
 lra_tmanns_snd = lra_tmanns . lff . lsnd
 
 lra_equal :: Lens HsRuleAnn (EpToken "=")
@@ -1304,22 +1292,8 @@ markLensTok (EpAnn anc a cs) l = do
   new <- markEpToken (view l a)
   return (EpAnn anc (set l new a) cs)
 
-markLensTok' :: (Monad m, Monoid w, KnownSymbol sym)
-  => a -> Lens a (EpToken sym) -> EP w m a
-markLensTok' a l = do
-  new <- markEpToken (view l a)
-  return (set l new a)
-
 -- ---------------------------------------------------------------------
 
-markEpAnnL :: (Monad m, Monoid w)
-  => ann -> Lens ann [AddEpAnn] -> AnnKeywordId -> EP w m ann
-markEpAnnL a l kw = do
-  anns <- mark (view l a) kw
-  return (set l anns a)
-
--- -------------------------------------
-
 markLensFun' :: (Monad m, Monoid w)
   => EpAnn ann -> Lens ann t -> (t -> EP w m t) -> EP w m (EpAnn ann)
 markLensFun' epann l f = markLensFun epann (lepa . l) f
@@ -1895,46 +1869,36 @@ instance ExactPrint (InstDecl GhcPs) where
     cid' <- markAnnotated cid
     return (ClsInstD     a  cid')
   exact (DataFamInstD a decl) = do
-    d' <- markAnnotated (DataFamInstDeclWithContext noAnn TopLevel decl)
-    return (DataFamInstD a (dc_d d'))
+    decl' <- markAnnotated decl
+    return (DataFamInstD a decl')
   exact (TyFamInstD a eqn) = do
     eqn' <- markAnnotated eqn
     return (TyFamInstD a eqn')
 
 -- ---------------------------------------------------------------------
 
-data DataFamInstDeclWithContext
-  = DataFamInstDeclWithContext
-    { _dc_a :: [AddEpAnn]
-    , _dc_f :: TopLevelFlag
-    , dc_d :: DataFamInstDecl GhcPs
-    }
-
-instance ExactPrint DataFamInstDeclWithContext where
+instance ExactPrint (DataFamInstDecl GhcPs) where
   getAnnotationEntry _ = NoEntryVal
   setAnnotationAnchor a _ _ _ = a
-  exact (DataFamInstDeclWithContext an c d) = do
-    debugM $ "starting DataFamInstDeclWithContext:an=" ++ showAst an
-    (an', d') <- exactDataFamInstDecl an c d
-    return (DataFamInstDeclWithContext an' c d')
+  exact d = do
+    d' <- exactDataFamInstDecl d
+    return d'
 
 -- ---------------------------------------------------------------------
 
 exactDataFamInstDecl :: (Monad m, Monoid w)
-                     => [AddEpAnn] -> TopLevelFlag -> DataFamInstDecl GhcPs
-                     -> EP w m ([AddEpAnn], DataFamInstDecl GhcPs)
-exactDataFamInstDecl an top_lvl
+                     => DataFamInstDecl GhcPs
+                     -> EP w m (DataFamInstDecl GhcPs)
+exactDataFamInstDecl
   (DataFamInstDecl (FamEqn { feqn_ext    = (ops, cps, eq)
                            , feqn_tycon  = tycon
                            , feqn_bndrs  = bndrs
                            , feqn_pats   = pats
                            , feqn_fixity = fixity
                            , feqn_rhs    = defn })) = do
-    ((ops', cps', an'), tycon', bndrs', pats', defn') <- exactDataDefn pp_hdr defn
-                                          -- See Note [an and an2 in exactDataFamInstDecl]
+    ((ops', cps'), tycon', bndrs', pats', defn') <- exactDataDefn pp_hdr defn
     return
-      (an',
-       DataFamInstDecl ( FamEqn { feqn_ext    = (ops', cps', eq)
+      (DataFamInstDecl ( FamEqn { feqn_ext    = (ops', cps', eq)
                                 , feqn_tycon  = tycon'
                                 , feqn_bndrs  = bndrs'
                                 , feqn_pats   = pats'
@@ -1944,28 +1908,12 @@ exactDataFamInstDecl an top_lvl
   where
     pp_hdr :: (Monad m, Monoid w)
            => Maybe (LHsContext GhcPs)
-           -> EP w m ( ([EpToken "("], [EpToken ")"], [AddEpAnn])
+           -> EP w m ( ([EpToken "("], [EpToken ")"] )
                      , LocatedN RdrName
                      , HsOuterTyVarBndrs () GhcPs
                      , HsFamEqnPats GhcPs
                      , Maybe (LHsContext GhcPs))
-    pp_hdr mctxt = do
-      an0 <- case top_lvl of
-               TopLevel -> markEpAnnL an lidl AnnInstance -- TODO: maybe in toplevel
-               NotTopLevel -> return an
-      exactHsFamInstLHS ops cps an0 tycon bndrs pats fixity mctxt
-
-{-
-Note [an and an2 in exactDataFamInstDecl]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The exactDataFamInstDecl function is called to render a
-DataFamInstDecl within its surrounding context. This context is
-rendered via the 'pp_hdr' function, which uses the exact print
-annotations from that context, named 'an'.  The EPAs used for
-rendering the DataDefn are contained in the FamEqn, and are called
-'an2'.
-
--}
+    pp_hdr mctxt = exactHsFamInstLHS ops cps tycon bndrs pats fixity mctxt
 
 -- ---------------------------------------------------------------------
 
@@ -2152,17 +2100,17 @@ instance ExactPrint (RuleDecl GhcPs) where
       case mtybndrs of
         Nothing -> return (an0, Nothing)
         Just bndrs -> do
-          an1 <-  markLensMAA' an0 lra_tyanns_fst  -- AnnForall
+          an1 <-  markLensFun an0 lra_tyanns_fst (\mt -> mapM markEpUniToken mt)  -- AnnForall
           bndrs' <- mapM markAnnotated bndrs
-          an2 <- markLensMAA' an1 lra_tyanns_snd  -- AnnDot
+          an2 <- markLensFun an1 lra_tyanns_snd (\mt -> mapM markEpToken mt)  -- AnnDot
           return (an2, Just bndrs')
 
-    an2 <- markLensMAA' an1 lra_tmanns_fst  -- AnnForall
+    an2 <- markLensFun an1 lra_tmanns_fst (\mt -> mapM markEpUniToken mt) -- AnnForall
     termbndrs' <- mapM markAnnotated termbndrs
-    an3 <- markLensMAA' an2 lra_tmanns_snd  -- AnnDot
+    an3 <- markLensFun an2 lra_tmanns_snd (\mt -> mapM markEpToken mt)  -- AnnDot
 
     lhs' <- markAnnotated lhs
-    an4 <- markLensTok' an3 lra_equal
+    an4 <- markLensFun an3 lra_equal markEpToken
     rhs' <- markAnnotated rhs
     return (HsRule (an4,nsrc) (L ln' n) act mtybndrs' termbndrs' lhs' rhs')
 
@@ -2268,10 +2216,10 @@ instance (ExactPrint body) => ExactPrint (FamEqn GhcPs body) where
                 , feqn_pats   = pats
                 , feqn_fixity = fixity
                 , feqn_rhs    = rhs }) = do
-    (_an0, tycon', bndrs', pats', _) <- exactHsFamInstLHS ops cps [] tycon bndrs pats fixity Nothing
+    ((ops', cps'), tycon', bndrs', pats',_) <- exactHsFamInstLHS ops cps tycon bndrs pats fixity Nothing
     eq' <- markEpToken eq
     rhs' <- markAnnotated rhs
-    return (FamEqn { feqn_ext    = ([], [], eq')
+    return (FamEqn { feqn_ext    = (ops', cps', eq')
                    , feqn_tycon  = tycon'
                    , feqn_bndrs  = bndrs'
                    , feqn_pats   = pats'
@@ -2284,24 +2232,23 @@ exactHsFamInstLHS ::
       (Monad m, Monoid w)
    => [EpToken "("]
    -> [EpToken ")"]
-   -> [AddEpAnn]
    -> LocatedN RdrName
    -> HsOuterTyVarBndrs () GhcPs
    -> HsFamEqnPats GhcPs
    -> LexicalFixity
    -> Maybe (LHsContext GhcPs)
-   -> EP w m ( ([EpToken "("], [EpToken ")"], [AddEpAnn])
+   -> EP w m ( ([EpToken "("], [EpToken ")"])
              , LocatedN RdrName
              , HsOuterTyVarBndrs () GhcPs
              , HsFamEqnPats GhcPs, Maybe (LHsContext GhcPs))
-exactHsFamInstLHS ops cps an thing bndrs typats fixity mb_ctxt = do
+exactHsFamInstLHS ops cps thing bndrs typats fixity mb_ctxt = do
   -- TODO:AZ: do these ans exist? They are in the binders now
-  an0 <- markEpAnnL an lidl AnnForall
+  -- an0 <- markEpAnnL an lidl AnnForall
   bndrs' <- markAnnotated bndrs
-  an1 <- markEpAnnL an0 lidl AnnDot
+  -- an1 <- markEpAnnL an0 lidl AnnDot
   mb_ctxt' <- mapM markAnnotated mb_ctxt
   (ops', cps', thing', typats') <- exact_pats ops cps typats
-  return ((ops', cps', an1), thing', bndrs', typats', mb_ctxt')
+  return ((ops', cps'), thing', bndrs', typats', mb_ctxt')
   where
     exact_pats :: (Monad m, Monoid w)
       => [EpToken "("] -> [EpToken ")"] -> HsFamEqnPats GhcPs
@@ -2730,8 +2677,8 @@ prepareListAnnotationF :: (Monad m, Monoid w) =>
 prepareListAnnotationF ls = map (\b -> (realSrcSpan $ getLocA b, go b)) ls
   where
     go (L l a) = do
-      (L l' d') <- markAnnotated (L l (DataFamInstDeclWithContext noAnn NotTopLevel a))
-      return (toDyn (L l' (dc_d d')))
+      (L l' d') <- markAnnotated (L l a)
+      return (toDyn (L l' d'))
 
 prepareListAnnotationA :: (Monad m, Monoid w, ExactPrint (LocatedAn an a))
   => [LocatedAn an a] -> [(RealSrcSpan,EP w m Dynamic)]
@@ -3498,18 +3445,34 @@ instance ExactPrint (HsCmd GhcPs) where
   getAnnotationEntry _ = NoEntryVal
   setAnnotationAnchor a _ _ _ = a
 
-  exact (HsCmdArrApp an arr arg o isRightToLeft) = do
-    if isRightToLeft
-      then do
-        arr' <- markAnnotated arr
-        an0 <- markKw an
-        arg' <- markAnnotated arg
-        return (HsCmdArrApp an0 arr' arg' o isRightToLeft)
-      else do
-        arg' <- markAnnotated arg
-        an0 <- markKw an
-        arr' <- markAnnotated arr
-        return (HsCmdArrApp an0 arr' arg' o isRightToLeft)
+  exact (HsCmdArrApp (isU, l) arr arg HsFirstOrderApp True) = do
+    arr' <- markAnnotated arr
+    l' <- case isU of
+      UnicodeSyntax -> printStringAtAA l  "⤙"
+      NormalSyntax -> printStringAtAA l  "-<"
+    arg' <- markAnnotated arg
+    return (HsCmdArrApp (isU, l') arr' arg' HsFirstOrderApp True)
+  exact (HsCmdArrApp (isU, l) arr arg HsFirstOrderApp False) = do
+    arg' <- markAnnotated arg
+    l' <- case isU of
+      UnicodeSyntax -> printStringAtAA l  "⤚"
+      NormalSyntax -> printStringAtAA l  ">-"
+    arr' <- markAnnotated arr
+    return (HsCmdArrApp (isU, l') arr' arg' HsFirstOrderApp False)
+  exact (HsCmdArrApp (isU, l) arr arg HsHigherOrderApp True) = do
+    arr' <- markAnnotated arr
+    l' <- case isU of
+      UnicodeSyntax -> printStringAtAA l  "⤛"
+      NormalSyntax -> printStringAtAA l  "-<<"
+    arg' <- markAnnotated arg
+    return (HsCmdArrApp (isU, l') arr' arg' HsHigherOrderApp True)
+  exact (HsCmdArrApp (isU, l) arr arg HsHigherOrderApp False) = do
+    arg' <- markAnnotated arg
+    l' <- case isU of
+      UnicodeSyntax -> printStringAtAA l  "⤜"
+      NormalSyntax -> printStringAtAA l  ">>-"
+    arr' <- markAnnotated arr
+    return (HsCmdArrApp (isU, l') arr' arg' HsHigherOrderApp False)
 
   exact (HsCmdArrForm an e fixity cs) = do
     an0 <- markLensMAA' an lal_open
@@ -3891,7 +3854,7 @@ exactDataDefn exactHdr
       nt' <- markEpToken nt
       return (t, nt', d)
 
-  i' <- markEpToken i -- optional
+  i' <- markEpToken i -- optional 'instance'
   mb_ct' <- mapM markAnnotated mb_ct
   (anx, ln', tvs', b, mctxt') <- exactHdr context
   (dc', mb_sig') <- case mb_sig of


=====================================
utils/haddock/haddock-api/src/Haddock/Types.hs
=====================================
@@ -842,28 +842,28 @@ type instance XLinearArrow _ DocNameI = NoExtField
 type instance XExplicitMult _ DocNameI = NoExtField
 type instance XXArrow _ DocNameI = DataConCantHappen
 
-type instance XForAllTy DocNameI = EpAnn [AddEpAnn]
-type instance XQualTy DocNameI = EpAnn [AddEpAnn]
-type instance XTyVar DocNameI = EpAnn [AddEpAnn]
-type instance XStarTy DocNameI = EpAnn [AddEpAnn]
-type instance XAppTy DocNameI = EpAnn [AddEpAnn]
-type instance XAppKindTy DocNameI = EpAnn [AddEpAnn]
-type instance XFunTy DocNameI = EpAnn [AddEpAnn]
+type instance XForAllTy DocNameI = EpAnn NoEpAnns
+type instance XQualTy DocNameI = EpAnn NoEpAnns
+type instance XTyVar DocNameI = EpAnn NoEpAnns
+type instance XStarTy DocNameI = EpAnn NoEpAnns
+type instance XAppTy DocNameI = EpAnn NoEpAnns
+type instance XAppKindTy DocNameI = EpAnn NoEpAnns
+type instance XFunTy DocNameI = EpAnn NoEpAnns
 type instance XListTy DocNameI = EpAnn AnnParen
 type instance XTupleTy DocNameI = EpAnn AnnParen
 type instance XSumTy DocNameI = EpAnn AnnParen
-type instance XOpTy DocNameI = EpAnn [AddEpAnn]
+type instance XOpTy DocNameI = EpAnn NoEpAnns
 type instance XParTy DocNameI = (EpToken "(", EpToken ")")
-type instance XIParamTy DocNameI = EpAnn [AddEpAnn]
-type instance XKindSig DocNameI = EpAnn [AddEpAnn]
+type instance XIParamTy DocNameI = EpAnn NoEpAnns
+type instance XKindSig DocNameI = EpAnn NoEpAnns
 type instance XSpliceTy DocNameI = DataConCantHappen
-type instance XDocTy DocNameI = EpAnn [AddEpAnn]
-type instance XBangTy DocNameI = EpAnn [AddEpAnn]
-type instance XRecTy DocNameI = EpAnn [AddEpAnn]
-type instance XExplicitListTy DocNameI = EpAnn [AddEpAnn]
-type instance XExplicitTupleTy DocNameI = EpAnn [AddEpAnn]
-type instance XTyLit DocNameI = EpAnn [AddEpAnn]
-type instance XWildCardTy DocNameI = EpAnn [AddEpAnn]
+type instance XDocTy DocNameI = EpAnn NoEpAnns
+type instance XBangTy DocNameI = EpAnn NoEpAnns
+type instance XRecTy DocNameI = EpAnn NoEpAnns
+type instance XExplicitListTy DocNameI = EpAnn NoEpAnns
+type instance XExplicitTupleTy DocNameI = EpAnn NoEpAnns
+type instance XTyLit DocNameI = EpAnn NoEpAnns
+type instance XWildCardTy DocNameI = EpAnn NoEpAnns
 type instance XXType DocNameI = HsCoreTy
 
 type instance XNumTy DocNameI = NoExtField



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

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/dbc77ce804c0f410f3f2894a158d0ee899ce64f5
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/20241026/d7045143/attachment-0001.html>


More information about the ghc-commits mailing list