@@ -72,6 +72,10 @@ import HscTypes (throwOneError)
72
72
import qualified GHC.Parser.Annotation as GHC
73
73
#endif
74
74
75
+ #if __GLASGOW_HASKELL__ >= 910
76
+ import GHC.Hs (EpAnn )
77
+ #endif
78
+
75
79
#if __GLASGOW_HASKELL__ >= 900
76
80
import GHC.Data.Bag
77
81
import GHC.Data.FastString (mkFastString , unpackFS )
@@ -204,14 +208,22 @@ emptyComments = noExtField
204
208
205
209
locA :: a -> a
206
210
locA = id
207
- #else
211
+ #elif __GLASGOW_HASKELL__ < 910
208
212
type MsgDoc = Outputable. SDoc
209
213
210
- locA :: SrcSpanAnn' a -> SrcSpan
214
+ locA :: SrcAnn a -> SrcSpan
211
215
locA = GHC. locA
212
216
213
217
noAnnSortKey :: AnnSortKey
214
218
noAnnSortKey = NoAnnSortKey
219
+ #else
220
+ type MsgDoc = Outputable. SDoc
221
+
222
+ locA :: EpAnn a -> SrcSpan
223
+ locA = GHC. locA
224
+
225
+ noAnnSortKey :: AnnSortKey a
226
+ noAnnSortKey = NoAnnSortKey
215
227
#endif
216
228
217
229
#if __GLASGOW_HASKELL__ < 902
@@ -230,7 +242,13 @@ sevFatal :: Err.MessageClass
230
242
sevFatal = Err. MCFatal
231
243
#endif
232
244
233
- #if __GLASGOW_HASKELL__ > 900
245
+ #if __GLASGOW_HASKELL__ >= 910
246
+ noExt :: NoAnn a => a
247
+ noExt = noAnn
248
+
249
+ instance NoAnn NoExtField where
250
+ noAnn = noExtField
251
+ #elif __GLASGOW_HASKELL__ > 900
234
252
noExt :: EpAnn ann
235
253
noExt = EpAnnNotUsed
236
254
#elif __GLASGOW_HASKELL__ > 808
@@ -252,12 +270,18 @@ pattern HsParP e <- HsPar _ e
252
270
253
271
pattern ParPatP :: LPat p -> Pat p
254
272
pattern ParPatP p <- ParPat _ p
255
- #else
273
+ #elif __GLASGOW_HASKELL__ < 910
256
274
pattern HsParP :: LHsExpr p -> HsExpr p
257
275
pattern HsParP e <- HsPar _ _ e _
258
276
259
277
pattern ParPatP :: LPat p -> Pat p
260
278
pattern ParPatP p <- ParPat _ _ p _
279
+ #else
280
+ pattern HsParP :: LHsExpr p -> HsExpr p
281
+ pattern HsParP e <- HsPar _ e
282
+
283
+ pattern ParPatP :: LPat p -> Pat p
284
+ pattern ParPatP p <- ParPat _ p
261
285
#endif
262
286
263
287
#if __GLASGOW_HASKELL__ < 906
@@ -430,9 +454,15 @@ conPatIn loc con = ConPat noExt loc con
430
454
conPatIn loc con = ConPatIn loc con
431
455
#endif
432
456
433
- #if __GLASGOW_HASKELL__ >= 902
457
+ #if __GLASGOW_HASKELL__ >= 910
458
+ noEpAnn :: NoAnn ann => GenLocated SrcSpan e -> GenLocated (EpAnn ann ) e
459
+ noEpAnn (L l e) = L (EpAnn (spanAsAnchor l) noAnn emptyComments) e
460
+
461
+ noLoc :: NoAnn ann => e -> GenLocated (EpAnn ann ) e
462
+ noLoc = noEpAnn . GHC. noLoc
463
+ #elif __GLASGOW_HASKELL__ >= 902
434
464
noEpAnn :: GenLocated SrcSpan e -> GenLocated (SrcAnn ann ) e
435
- noEpAnn (L l e) = L (SrcSpanAnn EpAnnNotUsed l) e
465
+ noEpAnn (L l e) = L (SrcSpanAnn noExt l) e
436
466
437
467
noLoc :: e -> GenLocated (SrcAnn ann ) e
438
468
noLoc = noEpAnn . GHC. noLoc
@@ -451,11 +481,16 @@ vecP srcLoc = \case
451
481
#if __GLASGOW_HASKELL__ < 904
452
482
as -> L srcLoc $ ParPat noExt $ go as
453
483
where
454
- #else
484
+ #elif __GLASGOW_HASKELL__ < 910
455
485
as -> L srcLoc $ ParPat noExt pL (go as) pR
456
486
where
457
487
pL = L (GHC. mkTokenLocation $ locA srcLoc) HsTok
458
488
pR = L (GHC. mkTokenLocation $ locA srcLoc) HsTok
489
+ #else
490
+ as -> L srcLoc $ ParPat (pL,pR) (go as)
491
+ where
492
+ pL = EpTok $ spanAsAnchor $ locA srcLoc
493
+ pR = EpTok $ spanAsAnchor $ locA srcLoc
459
494
#endif
460
495
go :: [LPat GhcPs ] -> LPat GhcPs
461
496
go (p@ (L l0 _): pats) =
@@ -505,11 +540,16 @@ varE loc rdr = L loc (HsVar noExtField (noLoc rdr))
505
540
parenE :: LHsExpr GhcPs -> LHsExpr GhcPs
506
541
#if __GLASGOW_HASKELL__ < 904
507
542
parenE e@ (L l _) = L l (HsPar noExt e)
508
- #else
543
+ #elif __GLASGOW_HASKELL__ < 910
509
544
parenE e@ (L l _) = L l (HsPar noExt pL e pR)
510
545
where
511
546
pL = L (GHC. mkTokenLocation $ locA l) HsTok
512
547
pR = L (GHC. mkTokenLocation $ locA l) HsTok
548
+ #else
549
+ parenE e@ (L l _) = L l (HsPar (pL,pR) e)
550
+ where
551
+ pL = EpTok $ spanAsAnchor $ locA l
552
+ pR = EpTok $ spanAsAnchor $ locA l
513
553
#endif
514
554
515
555
var :: String -> GHC. RdrName
@@ -567,8 +607,10 @@ simpleLambda :: HsExpr GhcPs -> Maybe ([LPat GhcPs], LHsExpr GhcPs)
567
607
simpleLambda expr = do
568
608
#if __GLASGOW_HASKELL__ < 906
569
609
HsLam _ (MG _x alts _origin) <- Just expr
570
- #else
610
+ #elif __GLASGOW_HASKELL__ < 910
571
611
HsLam _ (MG _x alts) <- Just expr
612
+ #else
613
+ HsLam _ _ (MG _x alts) <- Just expr
572
614
#endif
573
615
L _ [L _ (Match _matchX _matchContext matchPats matchGr)] <- Just alts
574
616
GRHSs _grX grHss _grLocalBinds <- Just matchGr
@@ -590,8 +632,12 @@ letE
590
632
letE loc sigs binds expr =
591
633
#if __GLASGOW_HASKELL__ < 904
592
634
L loc (HsLet noExt localBinds expr)
593
- #else
635
+ #elif __GLASGOW_HASKELL__ < 908
594
636
L loc (HsLet noExt tkLet localBinds tkIn expr)
637
+ #elif __GLASGOW_HASKELL__ < 910
638
+ L loc (HsLet noExt tkLet localBinds tkIn expr)
639
+ #else
640
+ L loc (HsLet (tkLet,tkIn) localBinds expr)
595
641
#endif
596
642
where
597
643
#if __GLASGOW_HASKELL__ >= 902
@@ -602,9 +648,12 @@ letE loc sigs binds expr =
602
648
localBinds = L loc $ HsValBinds noExt valBinds
603
649
#endif
604
650
605
- #if __GLASGOW_HASKELL__ >= 904
651
+ #if __GLASGOW_HASKELL__ >= 910
652
+ tkLet = EpTok $ spanAsAnchor $ locA loc
653
+ tkIn = EpTok $ spanAsAnchor $ locA loc
654
+ #elif __GLASGOW_HASKELL__ >= 904
606
655
tkLet = L (GHC. mkTokenLocation $ locA loc) HsTok
607
- tkIn = L (GHC. mkTokenLocation $ locA loc) HsTok
656
+ tkIn = L (GHC. mkTokenLocation $ locA loc) HsTok
608
657
#endif
609
658
610
659
valBinds :: HsValBindsLR GhcPs GhcPs
@@ -615,22 +664,33 @@ letE loc sigs binds expr =
615
664
616
665
-- | Simple construction of a lambda expression
617
666
lamE :: [LPat GhcPs ] -> LHsExpr GhcPs -> LHsExpr GhcPs
618
- lamE pats expr = noLoc $ HsLam noExtField mg
667
+ lamE pats expr =
668
+ #if __GLASGOW_HASKELL__ >= 910
669
+ noLoc $ HsLam noExt LamSingle mg
670
+ #else
671
+ noLoc $ HsLam noExtField mg
672
+ #endif
619
673
where
620
674
mg :: MatchGroup GhcPs (GenLocated SrcSpanAnnA (HsExpr GhcPs ))
621
675
#if __GLASGOW_HASKELL__ < 906
622
676
mg = MG noExtField matches GHC. Generated
623
677
#elif __GLASGOW_HASKELL__ < 908
624
678
mg = MG GHC. Generated matches
625
- #else
679
+ #elif __GLASGOW_HASKELL__ < 910
626
680
mg = MG (GHC. Generated GHC. DoPmc ) matches
681
+ #else
682
+ mg = MG (GHC. Generated GHC. OtherExpansion GHC. DoPmc ) matches
627
683
#endif
628
684
629
685
matches :: GenLocated SrcSpanAnnL [GenLocated SrcSpanAnnA (Match GhcPs (GenLocated SrcSpanAnnA (HsExpr GhcPs )))]
630
686
matches = noLoc $ [singleMatch]
631
687
632
688
singleMatch :: GenLocated SrcSpanAnnA (Match GhcPs (GenLocated SrcSpanAnnA (HsExpr GhcPs )))
689
+ #if __GLASGOW_HASKELL__ >= 910
690
+ singleMatch = noLoc $ Match noExt (LamAlt LamSingle ) pats grHss
691
+ #else
633
692
singleMatch = noLoc $ Match noExt LambdaExpr pats grHss
693
+ #endif
634
694
635
695
grHss :: GRHSs GhcPs (GenLocated SrcSpanAnnA (HsExpr GhcPs ))
636
696
grHss = GRHSs emptyComments [grHs] $
@@ -988,9 +1048,13 @@ decFromBinding dflags Binding {..} = do
988
1048
in patBind bindPat bod
989
1049
990
1050
patBind :: LPat GhcPs -> LHsExpr GhcPs -> HsBind GhcPs
991
- patBind lhs expr = PatBind noExt lhs rhs
1051
+ patBind lhs expr =
992
1052
#if __GLASGOW_HASKELL__ < 906
993
- ([] , [] )
1053
+ PatBind noExt lhs rhs ([] , [] )
1054
+ #elif __GLASGOW_HASKELL__ < 910
1055
+ PatBind noExt lhs rhs
1056
+ #else
1057
+ PatBind noExt lhs (HsNoMultAnn noExt) rhs
994
1058
#endif
995
1059
where
996
1060
rhs :: GRHSs GhcPs (GenLocated SrcSpanAnnA (HsExpr GhcPs ))
@@ -1037,7 +1101,8 @@ tagE :: (p ~ GhcPs, ?nms :: ExternalNames) => LHsExpr p -> LHsExpr p
1037
1101
tagE a = varE noSrcSpanA (tagName ? nms) `appE` a
1038
1102
1039
1103
tagTypeCon :: (p ~ GhcPs , ? nms :: ExternalNames ) => LHsType GhcPs
1040
- tagTypeCon = noLoc (HsTyVar noExt NotPromoted (noLoc (tagTName ? nms)))
1104
+ tagTypeCon =
1105
+ noLoc (HsTyVar noExt NotPromoted (noLoc (tagTName ? nms)))
1041
1106
1042
1107
sigPat :: (p ~ GhcPs ) => SrcSpanAnnA -> LHsType GhcPs -> LPat p -> LPat p
1043
1108
sigPat loc ty a = L loc $
@@ -1087,11 +1152,14 @@ unsnoc (x:xs) = Just (x:a, b)
1087
1152
1088
1153
hsFunTy :: (p ~ GhcPs ) => LHsType p -> LHsType p -> HsType p
1089
1154
hsFunTy =
1090
- HsFunTy noExt
1091
- #if __GLASGOW_HASKELL__ >= 900 && __GLASGOW_HASKELL__ < 904
1092
- (HsUnrestrictedArrow GHC. NormalSyntax )
1155
+ #if __GLASGOW_HASKELL__ >= 910
1156
+ HsFunTy noExt (HsUnrestrictedArrow noExt)
1093
1157
#elif __GLASGOW_HASKELL__ >= 904
1094
- (HsUnrestrictedArrow $ L NoTokenLoc HsNormalTok )
1158
+ HsFunTy noExt (HsUnrestrictedArrow $ L NoTokenLoc HsNormalTok )
1159
+ #elif __GLASGOW_HASKELL__ >= 900
1160
+ HsFunTy noExt (HsUnrestrictedArrow GHC. NormalSyntax )
1161
+ #else
1162
+ HsFunTy noExt
1095
1163
#endif
1096
1164
1097
1165
arrTy :: p ~ GhcPs => LHsType p -> LHsType p -> LHsType p
0 commit comments