summaryrefslogtreecommitdiff
path: root/compiler/GHC/Parser/PostProcess.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Parser/PostProcess.hs')
-rw-r--r--compiler/GHC/Parser/PostProcess.hs23
1 files changed, 14 insertions, 9 deletions
diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs
index ffe44227fd..946b9a87f3 100644
--- a/compiler/GHC/Parser/PostProcess.hs
+++ b/compiler/GHC/Parser/PostProcess.hs
@@ -719,13 +719,14 @@ mkGadtDecl loc names ty annsIn = do
(args, res_ty, annsa, csa) <-
case body_ty of
L ll (HsFunTy af hsArr (L loc' (HsRecTy an rf)) res_ty) -> do
- let an' = addTrailingAnnToL (locA loc') (anns af) (comments af) an
- case hsArr of
- HsUnrestrictedArrow _ -> return ()
- _ -> addError $ mkPlainErrorMsgEnvelope (getLocA body_ty) $
+ let an' = addCommentsToEpAnn (locA loc') an (comments af)
+ arr <- case hsArr of
+ HsUnrestrictedArrow arr -> return arr
+ _ -> do addError $ mkPlainErrorMsgEnvelope (getLocA body_ty) $
(PsErrIllegalGadtRecordMultiplicity hsArr)
+ return noHsUniTok
- return ( RecConGADT (L (SrcSpanAnn an' (locA loc')) rf), res_ty
+ return ( RecConGADT (L (SrcSpanAnn an' (locA loc')) rf) arr, res_ty
, [], epAnnComments (ann ll))
_ -> do
let (anns, cs, arg_types, res_type) = splitHsFunType body_ty
@@ -2980,11 +2981,15 @@ mkLHsOpTy x op y =
let loc = getLoc x `combineSrcSpansA` (noAnnSrcSpan $ getLocA op) `combineSrcSpansA` getLoc y
in L loc (mkHsOpTy x op y)
-mkMultTy :: IsUnicodeSyntax -> Located Token -> LHsType GhcPs -> HsArrow GhcPs
-mkMultTy u tok t@(L _ (HsTyLit _ (HsNumTy (SourceText "1") 1)))
+mkMultTy :: LHsToken "%" GhcPs -> LHsType GhcPs -> LHsUniToken "->" "→" GhcPs -> HsArrow GhcPs
+mkMultTy pct t@(L _ (HsTyLit _ (HsNumTy (SourceText "1") 1))) arr
-- See #18888 for the use of (SourceText "1") above
- = HsLinearArrow u (Just $ AddEpAnn AnnPercentOne (EpaSpan $ realSrcSpan $ combineLocs tok (reLoc t)))
-mkMultTy u tok t = HsExplicitMult u (Just $ AddEpAnn AnnPercent (EpaSpan $ realSrcSpan $ getLoc tok)) t
+ = HsLinearArrow (HsPct1 (L (getLoc pct Semi.<> locOf1) HsTok) arr)
+ where
+ -- The location of "1" in "%1".
+ locOf1 :: EpAnn NoEpAnns
+ locOf1 = EpAnn (spanAsAnchor (locA (getLoc t))) NoEpAnns emptyComments
+mkMultTy pct t arr = HsExplicitMult pct t arr
-----------------------------------------------------------------------------
-- Token symbols