diff --git a/compiler/GHC/Hs/Dump.hs b/compiler/GHC/Hs/Dump.hs index 5ac4cb688ab1973cb165f47a86ab60bdd37866f3..15ed78211af48ad0ccba917559a9a547f43c3661 100644 --- a/compiler/GHC/Hs/Dump.hs +++ b/compiler/GHC/Hs/Dump.hs @@ -73,7 +73,6 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0 `extQ` annotationNoEpAnns `extQ` annotationExprBracket `extQ` annotationTypedBracket - `extQ` addEpAnn `extQ` epTokenOC `extQ` epTokenCC `extQ` epTokenInstance @@ -216,11 +215,13 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0 BlankSrcSpanFile -> braces $ char ' ' <> (pprUserRealSpan False ss) <> char ' ' annParen :: AnnParen -> SDoc - annParen (AnnParen a o c) = case ba of + annParen ap = case ba of BlankEpAnnotations -> parens $ text "blanked:" <+> text "AnnParen" - NoBlankEpAnnotations -> - parens $ text "AnnParen" - $$ vcat [ppr a, epaLocation o, epaLocation c] + NoBlankEpAnnotations -> parens (case ap of + (AnnParens o c) -> text "AnnParens" $$ vcat [showAstData' o, showAstData' c] + (AnnParensHash o c) -> text "AnnParensHash" $$ vcat [showAstData' o, showAstData' c] + (AnnParensSquare o c) -> text "AnnParensSquare" $$ vcat [showAstData' o, showAstData' c] + ) annClassDecl :: AnnClassDecl -> SDoc annClassDecl (AnnClassDecl c ops cps v w oc cc s) = case ba of @@ -268,13 +269,6 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0 showAstData' d, showAstData' e] - addEpAnn :: AddEpAnn -> SDoc - addEpAnn (AddEpAnn a s) = case ba of - BlankEpAnnotations -> parens - $ text "blanked:" <+> text "AddEpAnn" - NoBlankEpAnnotations -> - parens $ text "AddEpAnn" <+> ppr a <+> epaLocation s - annotationExprBracket :: BracketAnn (EpUniToken "[|" "⟦") (EpToken "[e|") -> SDoc annotationExprBracket = annotationBracket diff --git a/compiler/GHC/Hs/Expr.hs b/compiler/GHC/Hs/Expr.hs index 11d7a47e415b163865ab835103a335cb2479afe4..2b3fc36377480b70f9bd9134ec32f8a6e997e41a 100644 --- a/compiler/GHC/Hs/Expr.hs +++ b/compiler/GHC/Hs/Expr.hs @@ -1600,8 +1600,8 @@ type instance XXGRHSs (GhcPass _) _ = DataConCantHappen data GrhsAnn = GrhsAnn { - ga_vbar :: Maybe EpaLocation, -- TODO:AZ do we need this? - ga_sep :: AddEpAnn -- ^ Match separator location + ga_vbar :: Maybe (EpToken "|"), + ga_sep :: Either (EpToken "=") TokRarrow -- ^ Match separator location, `=` or `->` } deriving (Data) instance NoAnn GrhsAnn where diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y index 858707505b4a0a3dd652d4c783015de7baa32023..5a046e0096a99df40bdb399e752d5fe601a73367 100644 --- a/compiler/GHC/Parser.y +++ b/compiler/GHC/Parser.y @@ -791,7 +791,7 @@ identifier :: { LocatedN RdrName } | qvarop { $1 } | qconop { $1 } | '->' {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon) - (NameAnnRArrow (isUnicode $1) Nothing (glR $1) Nothing []) } + (NameAnnRArrow Nothing (epUniTok $1) Nothing []) } ----------------------------------------------------------------------------- -- Backpack stuff @@ -1000,7 +1000,7 @@ header_top_importdecls :: { [LImportDecl GhcPs] } maybeexports :: { (Maybe (LocatedLI [LIE GhcPs])) } : '(' exportlist ')' {% fmap Just $ amsr (sLL $1 $> (fromOL $ snd $2)) - (AnnList Nothing (Just $ mop $1) (Just $ mcp $3) [] (noAnn,fst $2) []) } + (AnnList Nothing (ListParens (epTok $1) (epTok $3)) [] (noAnn,fst $2) []) } | {- empty -} { Nothing } exportlist :: { ([EpToken ","], OrdList (LIE GhcPs)) } @@ -1178,10 +1178,10 @@ maybeimpspec :: { Located (Maybe (ImportListInterpretation, LocatedLI [LIE GhcPs impspec :: { Located (ImportListInterpretation, LocatedLI [LIE GhcPs]) } : '(' importlist ')' {% do { es <- amsr (sLL $1 $> $ fromOL $ snd $2) - (AnnList Nothing (Just $ mop $1) (Just $ mcp $3) [] (noAnn,fst $2) []) + (AnnList Nothing (ListParens (epTok $1) (epTok $3)) [] (noAnn,fst $2) []) ; return $ sLL $1 $> (Exactly, es)} } | 'hiding' '(' importlist ')' {% do { es <- amsr (sLL $1 $> $ fromOL $ snd $3) - (AnnList Nothing (Just $ mop $2) (Just $ mcp $4) [] (epTok $1,fst $3) []) + (AnnList Nothing (ListParens (epTok $2) (epTok $4)) [] (epTok $1,fst $3) []) ; return $ sLL $1 $> (EverythingBut, es)} } importlist :: { ([EpToken ","], OrdList (LIE GhcPs)) } @@ -1736,9 +1736,9 @@ cvars1 :: { [RecordPatSynField GhcPs] } where_decls :: { LocatedLW (OrdList (LHsDecl GhcPs)) } : 'where' '{' decls '}' {% amsr (sLL $1 $> (thdOf3 $ unLoc $3)) - (AnnList (Just (fstOf3 $ unLoc $3)) (Just $ moc $2) (Just $ mcc $4) (sndOf3 $ unLoc $3) (epTok $1) []) } + (AnnList (Just (fstOf3 $ unLoc $3)) (ListBraces (epTok $2) (epTok $4)) (sndOf3 $ unLoc $3) (epTok $1) []) } | 'where' vocurly decls close {% amsr (sLL $1 $3 (thdOf3 $ unLoc $3)) - (AnnList (Just (fstOf3 $ unLoc $3)) Nothing Nothing (sndOf3 $ unLoc $3) (epTok $1) []) } + (AnnList (Just (fstOf3 $ unLoc $3)) ListNone (sndOf3 $ unLoc $3) (epTok $1) []) } pattern_synonym_sig :: { LSig GhcPs } : 'pattern' con_list '::' sigtype @@ -1874,9 +1874,9 @@ decls :: { Located (EpaLocation, [EpToken ";"], OrdList (LHsDecl GhcPs)) } | {- empty -} { noLoc (noAnn, [],nilOL) } decllist :: { Located (AnnList (),Located (OrdList (LHsDecl GhcPs))) } - : '{' decls '}' { sLL $1 $> (AnnList (Just (fstOf3 $ unLoc $2)) (Just $ moc $1) (Just $ mcc $3) (sndOf3 $ unLoc $2) noAnn [] + : '{' decls '}' { sLL $1 $> (AnnList (Just (fstOf3 $ unLoc $2)) (ListBraces (epTok $1) (epTok $3)) (sndOf3 $ unLoc $2) noAnn [] ,sL1 $2 $ thdOf3 $ unLoc $2) } - | vocurly decls close { L (getHasLoc $ fstOf3 $ unLoc $2) (AnnList (Just (glR $2)) Nothing Nothing (sndOf3 $ unLoc $2) noAnn [] + | vocurly decls close { L (getHasLoc $ fstOf3 $ unLoc $2) (AnnList (Just (glR $2)) ListNone (sndOf3 $ unLoc $2) noAnn [] ,sL1 $2 $ thdOf3 $ unLoc $2) } -- Binding groups other than those of class and instance declarations @@ -1884,16 +1884,16 @@ decllist :: { Located (AnnList (),Located (OrdList (LHsDecl GhcPs))) } binds :: { Located (HsLocalBinds GhcPs) } -- May have implicit parameters -- No type declarations - : decllist {% do { let { (AnnList anc o c s _ t, decls) = unLoc $1 } + : decllist {% do { let { (AnnList anc p s _ t, decls) = unLoc $1 } ; val_binds <- cvBindGroup (unLoc $ decls) ; !cs <- getCommentsFor (gl $1) - ; return (sL1 $1 $ HsValBinds (EpAnn (glR $1) (AnnList anc o c s noAnn t) cs) val_binds)} } + ; return (sL1 $1 $ HsValBinds (EpAnn (glR $1) (AnnList anc p s noAnn t) cs) val_binds)} } | '{' dbinds '}' {% acs (comb3 $1 $2 $3) (\loc cs -> (L loc - $ HsIPBinds (EpAnn (spanAsAnchor (comb3 $1 $2 $3)) (AnnList (Just$ glR $2) (Just $ moc $1) (Just $ mcc $3) [] noAnn []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) } + $ HsIPBinds (EpAnn (spanAsAnchor (comb3 $1 $2 $3)) (AnnList (Just$ glR $2) (ListBraces (epTok $1) (epTok $3)) [] noAnn []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) } | vocurly dbinds close {% acs (gl $2) (\loc cs -> (L loc - $ HsIPBinds (EpAnn (glR $1) (AnnList (Just $ glR $2) Nothing Nothing [] noAnn []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) } + $ HsIPBinds (EpAnn (glR $1) (AnnList (Just $ glR $2) ListNone [] noAnn []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) } wherebinds :: { Maybe (Located (HsLocalBinds GhcPs, Maybe EpAnnComments )) } @@ -2268,7 +2268,6 @@ type :: { LHsType GhcPs } | btype '->.' ctype {% hintLinear (getLoc $2) >> amsA' (sLL $1 $> $ HsFunTy noExtField (HsLinearArrow (EpLolly (epTok $2))) $1 $3) } - -- [mu AnnLollyU $2] } mult :: { Located (EpUniToken "->" "\8594" -> HsArrow GhcPs) } : PREFIX_PERCENT atype { sLL $1 $> (mkMultTy (epTok $1) $2) } @@ -2307,10 +2306,10 @@ tyop :: { (LocatedN RdrName, PromotionFlag) } : qtyconop { ($1, NotPromoted) } | tyvarop { ($1, NotPromoted) } | SIMPLEQUOTE qconop {% do { op <- amsr (sLL $1 $> (unLoc $2)) - (NameAnnQuote (glR $1) (gl $2) []) + (NameAnnQuote (epTok $1) (gl $2) []) ; return (op, IsPromoted) } } | SIMPLEQUOTE varop {% do { op <- amsr (sLL $1 $> (unLoc $2)) - (NameAnnQuote (glR $1) (gl $2) []) + (NameAnnQuote (epTok $1) (gl $2) []) ; return (op, IsPromoted) } } atype :: { LHsType GhcPs } @@ -2325,21 +2324,21 @@ atype :: { LHsType GhcPs } | PREFIX_TILDE atype {% amsA' (sLL $1 $> (mkBangTy (glR $1) SrcLazy $2)) } | PREFIX_BANG atype {% amsA' (sLL $1 $> (mkBangTy (glR $1) SrcStrict $2)) } - | '{' fielddecls '}' {% do { decls <- amsA' (sLL $1 $> $ HsRecTy (AnnList (listAsAnchorM $2) (Just $ moc $1) (Just $ mcc $3) [] noAnn []) $2) + | '{' fielddecls '}' {% do { decls <- amsA' (sLL $1 $> $ HsRecTy (AnnList (listAsAnchorM $2) (ListBraces (epTok $1) (epTok $3)) [] noAnn []) $2) ; checkRecordSyntax decls }} -- Constructor sigs only -- List and tuple syntax whose interpretation depends on the extension ListTuplePuns. - | '(' ')' {% amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (glR $1) [] (glR $>)) } + | '(' ')' {% amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (epTok $1) [] (epTok $>)) } | '(' ktype ',' comma_types1 ')' {% do { h <- addTrailingCommaA $2 (gl $3) - ; amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (glR $1) (h : $4) (glR $>)) }} + ; amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (epTok $1) (h : $4) (epTok $>)) }} | '(#' '#)' {% do { requireLTPuns PEP_TupleSyntaxType $1 $> - ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glR $1) (glR $2)) HsUnboxedTuple []) } } + ; amsA' (sLL $1 $> $ HsTupleTy (AnnParensHash (epTok $1) (epTok $2)) HsUnboxedTuple []) } } | '(#' comma_types1 '#)' {% do { requireLTPuns PEP_TupleSyntaxType $1 $> - ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glR $1) (glR $3)) HsUnboxedTuple $2) } } + ; amsA' (sLL $1 $> $ HsTupleTy (AnnParensHash (epTok $1) (epTok $3)) HsUnboxedTuple $2) } } | '(#' bar_types2 '#)' {% do { requireLTPuns PEP_SumSyntaxType $1 $> - ; amsA' (sLL $1 $> $ HsSumTy (AnnParen AnnParensHash (glR $1) (glR $3)) $2) } } - | '[' ktype ']' {% amsA' . sLL $1 $> =<< (mkListSyntaxTy1 (glR $1) $2 (glR $3)) } + ; amsA' (sLL $1 $> $ HsSumTy (AnnParensHash (epTok $1) (epTok $3)) $2) } } + | '[' ktype ']' {% amsA' . sLL $1 $> =<< (mkListSyntaxTy1 (epTok $1) $2 (epTok $3)) } | '(' ktype ')' {% amsA' (sLL $1 $> $ HsParTy (epTok $1, epTok $3) $2) } -- see Note [Promotion] for the followings | SIMPLEQUOTE '(' ')' {% do { requireLTPuns PEP_QuoteDisambiguation $1 $> @@ -2351,7 +2350,7 @@ atype :: { LHsType GhcPs } {% do { requireLTPuns PEP_QuoteDisambiguation $1 $> ; h <- addTrailingCommaA $3 (gl $4) ; amsA' (sLL $1 $> $ HsExplicitTupleTy (epTok $1,epTok $2,epTok $6) (h : $5)) }} - | '[' ']' {% withCombinedComments $1 $> (mkListSyntaxTy0 (glR $1) (glR $2)) } + | '[' ']' {% withCombinedComments $1 $> (mkListSyntaxTy0 (epTok $1) (epTok $2)) } | SIMPLEQUOTE '[' comma_types0 ']' {% do { requireLTPuns PEP_QuoteDisambiguation $1 $> ; amsA' (sLL $1 $> $ HsExplicitListTy (epTok $1, epTok $2, epTok $4) IsPromoted $3) }} | SIMPLEQUOTE var {% amsA' (sLL $1 $> $ HsTyVar (epTok $1) IsPromoted $2) } @@ -2630,9 +2629,9 @@ deriv_clause_types :: { LDerivClauseTys GhcPs } sL1a $1 $ HsTyVar noAnn NotPromoted $1 } in sL1a $1 (DctSingle noExtField tc) } | '(' ')' {% amsr (sLL $1 $> (DctMulti noExtField [])) - (AnnContext Nothing [glR $1] [glR $2]) } + (AnnContext Nothing [epTok $1] [epTok $2]) } | '(' deriv_types ')' {% amsr (sLL $1 $> (DctMulti noExtField $2)) - (AnnContext Nothing [glR $1] [glR $3])} + (AnnContext Nothing [epTok $1] [epTok $3])} ----------------------------------------------------------------------------- -- Value definitions @@ -2697,7 +2696,7 @@ rhs :: { Located (GRHSs GhcPs (LHsExpr GhcPs)) } ; let loc = (comb3 $1 $2 (L l bs)) ; let locg = (comb2 $1 $2) ; acs loc (\loc cs -> - sL loc (GRHSs csw (unguardedRHS (EpAnn (spanAsAnchor locg) (GrhsAnn Nothing (mj AnnEqual $1)) cs) locg $2) + sL loc (GRHSs csw (unguardedRHS (EpAnn (spanAsAnchor locg) (GrhsAnn Nothing (Left $ epTok $1)) cs) locg $2) bs)) } } | gdrhs wherebinds {% do { let {L l (bs, csw) = adaptWhereBinds $2} ; acs (comb2 $1 (L l bs)) (\loc cs -> L loc @@ -2709,7 +2708,7 @@ gdrhs :: { Located [LGRHS GhcPs (LHsExpr GhcPs)] } gdrh :: { LGRHS GhcPs (LHsExpr GhcPs) } : '|' guardquals '=' exp {% runPV (unECP $4) >>= \ $4 -> - acsA (comb2 $1 $>) (\loc cs -> L loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glR $1) (mj AnnEqual $3)) cs) (unLoc $2) $4) } + acsA (comb2 $1 $>) (\loc cs -> L loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ epTok $1) (Left $ epTok $3)) cs) (unLoc $2) $4) } sigdecl :: { LHsDecl GhcPs } : @@ -3025,7 +3024,7 @@ aexp :: { ECP } $ Match { m_ext = noExtField , m_ctxt = LamAlt LamSingle , m_pats = L (listLocation $2) $2 - , m_grhss = unguardedGRHSs (comb2 $3 $4) $4 (EpAnn (glR $3) (GrhsAnn Nothing (mu AnnRarrow $3)) emptyComments) }]) + , m_grhss = unguardedGRHSs (comb2 $3 $4) $4 (EpAnn (glR $3) (GrhsAnn Nothing (Right $ epUniTok $3)) emptyComments) }]) (EpAnnLam (glR $1) Nothing) } | '\\' 'lcase' altslist(pats1) { ECP $ $3 >>= \ $3 -> @@ -3149,7 +3148,7 @@ aexp2 :: { ECP } mkSumOrTuplePV (noAnnSrcSpan $ comb2 $1 $>) Unboxed $2 (glR $1,glR $3) } - | '[' list ']' { ECP $ $2 (comb2 $1 $>) (mos $1,mcs $3) } + | '[' list ']' { ECP $ $2 (comb2 $1 $>) (glR $1,glR $3) } | '_' { ECP $ mkHsWildCardPV (getLoc $1) } -- Template Haskell Extension @@ -3181,7 +3180,7 @@ aexp2 :: { ECP } -- arrow notation extension | '(|' aexp cmdargs '|)' {% runPV (unECP $2) >>= \ $2 -> fmap ecpFromCmd $ - amsA' (sLL $1 $> $ HsCmdArrForm (AnnList (glRM $1) (Just $ mu AnnOpenB $1) (Just $ mu AnnCloseB $4) [] noAnn []) $2 Prefix + amsA' (sLL $1 $> $ HsCmdArrForm (AnnList (glRM $1) (ListBanana (epUniTok $1) (epUniTok $4)) [] noAnn []) $2 Prefix (reverse $3)) } projection :: { Located (NonEmpty (LocatedAn NoEpAnns (DotFieldOcc GhcPs))) } @@ -3313,35 +3312,35 @@ tup_tail :: { forall b. DisambECP b => PV [Either (EpAnn Bool) (LocatedA b)] } -- The rules below are little bit contorted to keep lexps left-recursive while -- avoiding another shift/reduce-conflict. -- Never empty. -list :: { forall b. DisambECP b => SrcSpan -> (AddEpAnn, AddEpAnn) -> PV (LocatedA b) } +list :: { forall b. DisambECP b => SrcSpan -> (EpaLocation, EpaLocation) -> PV (LocatedA b) } : texp { \loc (ao,ac) -> unECP $1 >>= \ $1 -> - mkHsExplicitListPV loc [$1] (AnnList Nothing (Just ao) (Just ac) [] noAnn []) } + mkHsExplicitListPV loc [$1] (AnnList Nothing (ListSquare (EpTok ao) (EpTok ac)) [] noAnn []) } | lexps { \loc (ao,ac) -> $1 >>= \ $1 -> - mkHsExplicitListPV loc (reverse $1) (AnnList Nothing (Just ao) (Just ac) [] noAnn []) } + mkHsExplicitListPV loc (reverse $1) (AnnList Nothing (ListSquare (EpTok ao) (EpTok ac)) [] noAnn []) } | texp '..' { \loc (ao,ac) -> unECP $1 >>= \ $1 -> - amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok (addEpAnnLoc ao)) Nothing (epTok $2) (EpTok (addEpAnnLoc ac))) Nothing (From $1)) + amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok ao) Nothing (epTok $2) (EpTok ac)) Nothing (From $1)) >>= ecpFromExp' } | texp ',' exp2 '..' { \loc (ao,ac) -> unECP $1 >>= \ $1 -> unECP $3 >>= \ $3 -> - amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok (addEpAnnLoc ao)) (Just (epTok $2)) (epTok $4) (EpTok (addEpAnnLoc ac))) Nothing (FromThen $1 $3)) + amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok ao) (Just (epTok $2)) (epTok $4) (EpTok ac)) Nothing (FromThen $1 $3)) >>= ecpFromExp' } | texp '..' exp2 { \loc (ao,ac) -> unECP $1 >>= \ $1 -> unECP $3 >>= \ $3 -> - amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok (addEpAnnLoc ao)) Nothing (epTok $2) (EpTok (addEpAnnLoc ac))) Nothing (FromTo $1 $3)) + amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok ao) Nothing (epTok $2) (EpTok ac)) Nothing (FromTo $1 $3)) >>= ecpFromExp' } | texp ',' exp2 '..' exp2 { \loc (ao,ac) -> unECP $1 >>= \ $1 -> unECP $3 >>= \ $3 -> unECP $5 >>= \ $5 -> - amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok (addEpAnnLoc ao)) (Just (epTok $2)) (epTok $4) (EpTok (addEpAnnLoc ac))) Nothing (FromThenTo $1 $3 $5)) + amsA' (L loc $ ArithSeq (AnnArithSeq (EpTok ao) (Just (epTok $2)) (epTok $4) (EpTok ac)) Nothing (FromThenTo $1 $3 $5)) >>= ecpFromExp' } | texp '|' flattenedpquals { \loc (ao,ac) -> checkMonadComp >>= \ ctxt -> unECP $1 >>= \ $1 -> do { t <- addTrailingVbarA $1 (gl $2) - ; amsA' (L loc $ mkHsCompAnns ctxt (unLoc $3) t (AnnList Nothing (Just ao) (Just ac) [] noAnn [])) + ; amsA' (L loc $ mkHsCompAnns ctxt (unLoc $3) t (AnnList Nothing (ListSquare (EpTok ao) (EpTok ac)) [] noAnn [])) >>= ecpFromExp' } } lexps :: { forall b. DisambECP b => PV [LocatedA b] } @@ -3447,11 +3446,11 @@ guardquals1 :: { Located [LStmt GhcPs (LHsExpr GhcPs)] } altslist(PATS) :: { forall b. DisambECP b => PV (LocatedLW [LMatch GhcPs (LocatedA b)]) } : '{' alts(PATS) '}' { $2 >>= \ $2 -> amsr (sLL $1 $> (reverse (snd $ unLoc $2))) - (AnnList (Just $ glR $2) (Just $ moc $1) (Just $ mcc $3) (fst $ unLoc $2) noAnn []) } + (AnnList (Just $ glR $2) (ListBraces (epTok $1) (epTok $3)) (fst $ unLoc $2) noAnn []) } | vocurly alts(PATS) close { $2 >>= \ $2 -> amsr (L (getLoc $2) (reverse (snd $ unLoc $2))) - (AnnList (Just $ glR $2) Nothing Nothing (fst $ unLoc $2) noAnn []) } - | '{' '}' { amsr (sLL $1 $> []) (AnnList Nothing (Just $ moc $1) (Just $ mcc $2) [] noAnn []) } + (AnnList (Just $ glR $2) ListNone (fst $ unLoc $2) noAnn []) } + | '{' '}' { amsr (sLL $1 $> []) (AnnList Nothing (ListBraces (epTok $1) (epTok $2)) [] noAnn []) } | vocurly close { return $ noLocA [] } alts(PATS) :: { forall b. DisambECP b => PV (Located ([EpToken ";"],[LMatch GhcPs (LocatedA b)])) } @@ -3494,7 +3493,7 @@ alt_rhs :: { forall b. DisambECP b => PV (Located (GRHSs GhcPs (LocatedA b))) } ralt :: { forall b. DisambECP b => PV (Located [LGRHS GhcPs (LocatedA b)]) } : '->' exp { unECP $2 >>= \ $2 -> - acs (comb2 $1 $>) (\loc cs -> L loc (unguardedRHS (EpAnn (spanAsAnchor $ comb2 $1 $2) (GrhsAnn Nothing (mu AnnRarrow $1)) cs) (comb2 $1 $2) $2)) } + acs (comb2 $1 $>) (\loc cs -> L loc (unguardedRHS (EpAnn (spanAsAnchor $ comb2 $1 $2) (GrhsAnn Nothing (Right $ epUniTok $1)) cs) (comb2 $1 $2) $2)) } | gdpats { $1 >>= \gdpats -> return $ sL1 gdpats (reverse (unLoc gdpats)) } @@ -3516,7 +3515,7 @@ ifgdpats :: { Located ((EpToken "{", EpToken "}"), [LGRHS GhcPs (LHsExpr GhcPs)] gdpat :: { forall b. DisambECP b => PV (LGRHS GhcPs (LocatedA b)) } : '|' guardquals '->' exp { unECP $4 >>= \ $4 -> - acsA (comb2 $1 $>) (\loc cs -> sL loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glR $1) (mu AnnRarrow $3)) cs) (unLoc $2) $4) } + acsA (comb2 $1 $>) (\loc cs -> sL loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ epTok $1) (Right $ epUniTok $3)) cs) (unLoc $2) $4) } -- 'pat' recognises a pattern, including one with a bang at the top -- e.g. "!x" or "!(x,y)" or "C a b" etc @@ -3561,9 +3560,9 @@ apat : aexp {% (checkPattern <=< runPV) (unECP $1) } stmtlist :: { forall b. DisambECP b => PV (LocatedLW [LocatedA (Stmt GhcPs (LocatedA b))]) } : '{' stmts '}' { $2 >>= \ $2 -> - amsr (sLL $1 $> (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) (Just $ moc $1) (Just $ mcc $3) (fromOL $ fst $ unLoc $2) noAnn []) } + amsr (sLL $1 $> (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) (ListBraces (epTok $1) (epTok $3)) (fromOL $ fst $ unLoc $2) noAnn []) } | vocurly stmts close { $2 >>= \ $2 -> amsr - (L (stmtsLoc $2) (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) Nothing Nothing (fromOL $ fst $ unLoc $2) noAnn []) } + (L (stmtsLoc $2) (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) ListNone (fromOL $ fst $ unLoc $2) noAnn []) } -- do { ;; s ; s ; ; s ;; } -- The last Stmt should be an expression, but that's hard to enforce @@ -3735,7 +3734,7 @@ name_boolformula_and_list :: { [LBooleanFormula (LocatedN RdrName)] } name_boolformula_atom :: { LBooleanFormula (LocatedN RdrName) } : '(' name_boolformula ')' {% amsr (sLL $1 $> (Parens $2)) - (AnnList Nothing (Just (mop $1)) (Just (mcp $3)) [] noAnn []) } + (AnnList Nothing (ListParens (epTok $1) (epTok $3)) [] noAnn []) } | name_var { sL1a $1 (Var $1) } namelist :: { Located [LocatedN RdrName] } @@ -3759,12 +3758,12 @@ qcon :: { LocatedN RdrName } gen_qcon :: { LocatedN RdrName } : qconid { $1 } | '(' qconsym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } con :: { LocatedN RdrName } : conid { $1 } | '(' consym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } | syscon { $1 } con_list :: { Located (NonEmpty (LocatedN RdrName)) } @@ -3779,31 +3778,31 @@ qcon_list : qcon { [$1] } -- See Note [ExplicitTuple] in GHC.Hs.Expr sysdcon_nolist :: { LocatedN DataCon } -- Wired in data constructors : '(' commas ')' {% amsr (sLL $1 $> $ tupleDataCon Boxed (snd $2 + 1)) - (NameAnnCommas NameParens (glR $1) (map srcSpan2e (fst $2)) (glR $3) []) } - | '(#' '#)' {% amsr (sLL $1 $> $ unboxedUnitDataCon) (NameAnnOnly NameParensHash (glR $1) (glR $2) []) } + (NameAnnCommas (NameParens (epTok $1) (epTok $3)) (map srcSpan2e (fst $2)) []) } + | '(#' '#)' {% amsr (sLL $1 $> $ unboxedUnitDataCon) (NameAnnOnly (NameParensHash (epTok $1) (epTok $2)) []) } | '(#' commas '#)' {% amsr (sLL $1 $> $ tupleDataCon Unboxed (snd $2 + 1)) - (NameAnnCommas NameParensHash (glR $1) (map srcSpan2e (fst $2)) (glR $3) []) } + (NameAnnCommas (NameParensHash (epTok $1) (epTok $3)) (map srcSpan2e (fst $2)) []) } syscon :: { LocatedN RdrName } : sysdcon { L (getLoc $1) $ nameRdrName (dataConName (unLoc $1)) } | '(' '->' ')' {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon) - (NameAnnRArrow (isUnicode $2) (Just $ glR $1) (glR $2) (Just $ glR $3) []) } + (NameAnnRArrow (Just $ epTok $1) (epUniTok $2) (Just $ epTok $3) []) } -- See Note [Empty lists] in GHC.Hs.Expr sysdcon :: { LocatedN DataCon } : sysdcon_nolist { $1 } - | '(' ')' {% amsr (sLL $1 $> unitDataCon) (NameAnnOnly NameParens (glR $1) (glR $2) []) } - | '[' ']' {% amsr (sLL $1 $> nilDataCon) (NameAnnOnly NameSquare (glR $1) (glR $2) []) } + | '(' ')' {% amsr (sLL $1 $> unitDataCon) (NameAnnOnly (NameParens (epTok $1) (epTok $2)) []) } + | '[' ']' {% amsr (sLL $1 $> nilDataCon) (NameAnnOnly (NameSquare (epTok $1) (epTok $2)) []) } conop :: { LocatedN RdrName } : consym { $1 } | '`' conid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } qconop :: { LocatedN RdrName } : qconsym { $1 } | '`' qconid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } ---------------------------------------------------------------------------- -- Type constructors @@ -3814,29 +3813,29 @@ qconop :: { LocatedN RdrName } gtycon :: { LocatedN RdrName } -- A "general" qualified tycon, including unit tuples : ntgtycon { $1 } | '(' ')' {% amsr (sLL $1 $> $ getRdrName unitTyCon) - (NameAnnOnly NameParens (glR $1) (glR $2) []) } + (NameAnnOnly (NameParens (epTok $1) (epTok $2)) []) } | '(#' '#)' {% amsr (sLL $1 $> $ getRdrName unboxedUnitTyCon) - (NameAnnOnly NameParensHash (glR $1) (glR $2) []) } + (NameAnnOnly (NameParensHash (epTok $1) (epTok $2)) []) } | '[' ']' {% amsr (sLL $1 $> $ listTyCon_RDR) - (NameAnnOnly NameSquare (glR $1) (glR $2) []) } + (NameAnnOnly (NameSquare (epTok $1) (epTok $2)) []) } ntgtycon :: { LocatedN RdrName } -- A "general" qualified tycon, excluding unit tuples : oqtycon { $1 } | '(' commas ')' {% do { n <- mkTupleSyntaxTycon Boxed (snd $2 + 1) - ; amsr (sLL $1 $> n) (NameAnnCommas NameParens (glR $1) (map srcSpan2e (fst $2)) (glR $3) []) }} + ; amsr (sLL $1 $> n) (NameAnnCommas (NameParens (epTok $1) (epTok $3)) (map srcSpan2e (fst $2)) []) }} | '(#' commas '#)' {% do { n <- mkTupleSyntaxTycon Unboxed (snd $2 + 1) - ; amsr (sLL $1 $> n) (NameAnnCommas NameParensHash (glR $1) (map srcSpan2e (fst $2)) (glR $3) []) }} + ; amsr (sLL $1 $> n) (NameAnnCommas (NameParensHash (epTok $1) (epTok $3)) (map srcSpan2e (fst $2)) []) }} | '(#' bars '#)' {% do { requireLTPuns PEP_SumSyntaxType $1 $> ; amsr (sLL $1 $> $ (getRdrName (sumTyCon (snd $2 + 1)))) - (NameAnnBars NameParensHash (glR $1) (map srcSpan2e (fst $2)) (glR $3) []) } } + (NameAnnBars (epTok $1, epTok $3) (map srcSpan2e (fst $2)) []) } } | '(' '->' ')' {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon) - (NameAnnRArrow (isUnicode $2) (Just $ glR $1) (glR $2) (Just $ glR $3) []) } + (NameAnnRArrow (Just $ epTok $1) (epUniTok $2) (Just $ epTok $3) []) } oqtycon :: { LocatedN RdrName } -- An "ordinary" qualified tycon; -- These can appear in export lists : qtycon { $1 } | '(' qtyconsym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } oqtycon_no_varcon :: { LocatedN RdrName } -- Type constructor which cannot be mistaken -- for variable constructor in export lists @@ -3844,13 +3843,13 @@ oqtycon_no_varcon :: { LocatedN RdrName } -- Type constructor which cannot be m : qtycon { $1 } | '(' QCONSYM ')' {% let { name :: Located RdrName ; name = sL1 $2 $! mkQual tcClsName (getQCONSYM $2) } - in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + in amsr (sLL $1 $> (unLoc name)) (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } | '(' CONSYM ')' {% let { name :: Located RdrName ; name = sL1 $2 $! mkUnqual tcClsName (getCONSYM $2) } - in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + in amsr (sLL $1 $> (unLoc name)) (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } | '(' ':' ')' {% let { name :: Located RdrName ; name = sL1 $2 $! consDataCon_RDR } - in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + in amsr (sLL $1 $> (unLoc name)) (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } {- Note [Type constructors in export list] ~~~~~~~~~~~~~~~~~~~~~ @@ -3876,7 +3875,7 @@ qtyconop :: { LocatedN RdrName } -- Qualified or unqualified -- See Note [%shift: qtyconop -> qtyconsym] : qtyconsym %shift { $1 } | '`' qtycon '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } qtycon :: { LocatedN RdrName } -- Qualified or unqualified : QCONID { sL1n $1 $! mkQual tcClsName (getQCONID $1) } @@ -3902,7 +3901,7 @@ tyconsym :: { LocatedN RdrName } otycon :: { LocatedN RdrName } : tycon { $1 } | '(' tyconsym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } ----------------------------------------------------------------------------- -- Operators @@ -3911,12 +3910,12 @@ op :: { LocatedN RdrName } -- used in infix decls : varop { $1 } | conop { $1 } | '->' {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon) - (NameAnnRArrow (isUnicode $1) Nothing (glR $1) Nothing []) } + (NameAnnRArrow Nothing (epUniTok $1) Nothing []) } varop :: { LocatedN RdrName } : varsym { $1 } | '`' varid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } qop :: { forall b. DisambInfixOp b => PV (LocatedN b) } -- used in sections : qvarop { mkHsVarOpPV $1 } @@ -3934,12 +3933,12 @@ hole_op : '`' '_' '`' { sLLa $1 $> (hsHoleExpr (Just $ EpAnnUnboundVar qvarop :: { LocatedN RdrName } : qvarsym { $1 } | '`' qvarid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } qvaropm :: { LocatedN RdrName } : qvarsym_no_minus { $1 } | '`' qvarid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } ----------------------------------------------------------------------------- -- Type variables @@ -3949,7 +3948,7 @@ tyvar : tyvarid { $1 } tyvarop :: { LocatedN RdrName } tyvarop : '`' tyvarid '`' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameBackquotes (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameBackquotes (epTok $1) (epTok $3)) (glR $2) []) } tyvarid :: { LocatedN RdrName } : VARID { sL1n $1 $! mkUnqual tvName (getVARID $1) } @@ -3967,14 +3966,14 @@ tyvarid :: { LocatedN RdrName } var :: { LocatedN RdrName } : varid { $1 } | '(' varsym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } qvar :: { LocatedN RdrName } : qvarid { $1 } | '(' varsym ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } | '(' qvarsym1 ')' {% amsr (sLL $1 $> (unLoc $2)) - (NameAnn NameParens (glR $1) (glR $2) (glR $3) []) } + (NameAnn (NameParens (epTok $1) (epTok $3)) (glR $2) []) } -- We've inlined qvarsym here so that the decision about -- whether it's a qvar or a var can be postponed until -- *after* we see the close paren. @@ -4476,14 +4475,6 @@ in GHC.Parser.Annotation -} --- |Construct an AddEpAnn from the annotation keyword and the location --- of the keyword itself -mj :: AnnKeywordId -> Located e -> AddEpAnn -mj !a !l = AddEpAnn a (srcSpan2e $ gl l) - -mjN :: AnnKeywordId -> LocatedN e -> AddEpAnn -mjN !a !l = AddEpAnn a (srcSpan2e $ glA l) - msemi :: Located e -> [TrailingAnn] msemi !l = if isZeroWidthSpan (gl l) then [] else [AddSemiAnn (srcSpan2e $ gl l)] @@ -4493,12 +4484,6 @@ msemiA !l = if isZeroWidthSpan (gl l) then [] else [EpTok (srcSpan2e $ gl l)] msemim :: Located e -> Maybe EpaLocation msemim !l = if isZeroWidthSpan (gl l) then Nothing else Just (srcSpan2e $ gl l) --- |Construct an AddEpAnn from the annotation keyword and the Located Token. If --- the token has a unicode equivalent and this has been used, provide the --- unicode variant of the annotation. -mu :: AnnKeywordId -> Located Token -> AddEpAnn -mu !a lt@(L l t) = AddEpAnn (toUnicodeAnn a lt) (srcSpan2e l) - -- | If the 'Token' is using its unicode variant return the unicode variant of -- the annotation toUnicodeAnn :: AnnKeywordId -> Located Token -> AnnKeywordId @@ -4579,27 +4564,6 @@ amsr (L l a) an = do !cs <- getCommentsFor l return (L (EpAnn (spanAsAnchor l) an cs) a) --- |Synonyms for AddEpAnn versions of AnnOpen and AnnClose -mo,mc :: Located Token -> AddEpAnn -mo !ll = mj AnnOpen ll -mc !ll = mj AnnClose ll - -moc,mcc :: Located Token -> AddEpAnn -moc !ll = mj AnnOpenC ll -mcc !ll = mj AnnCloseC ll - -mop,mcp :: Located Token -> AddEpAnn -mop !ll = mj AnnOpenP ll -mcp !ll = mj AnnCloseP ll - -moh,mch :: Located Token -> AddEpAnn -moh !ll = mj AnnOpenPH ll -mch !ll = mj AnnClosePH ll - -mos,mcs :: Located Token -> AddEpAnn -mos !ll = mj AnnOpenS ll -mcs !ll = mj AnnCloseS ll - -- | Parse a Haskell module with Haddock comments. This is done in two steps: -- -- * 'parseModuleNoHaddock' to build the AST @@ -4641,11 +4605,7 @@ commentsPA la@(L l a) = do hsDoAnn :: EpToken "rec" -> LocatedAn t b -> AnnList (EpToken "rec") hsDoAnn tok (L ll _) - = AnnList (Just $ spanAsAnchor (locA ll)) Nothing Nothing [] tok [] - -listAsAnchor :: [LocatedAn t a] -> Located b -> EpaLocation -listAsAnchor [] (L l _) = spanAsAnchor l -listAsAnchor (h:_) s = spanAsAnchor (comb2 h s) + = AnnList (Just $ spanAsAnchor (locA ll)) ListNone [] tok [] listAsAnchorM :: [LocatedAn t a] -> Maybe EpaLocation listAsAnchorM [] = Nothing @@ -4730,7 +4690,7 @@ addTrailingDarrowC :: LocatedC a -> Located Token -> EpAnnComments -> LocatedC a addTrailingDarrowC (L (EpAnn lr (AnnContext _ o c) csc) a) lt cs = let u = if (isUnicode lt) then UnicodeSyntax else NormalSyntax - in L (EpAnn lr (AnnContext (Just (u,glR lt)) o c) (cs Semi.<> csc)) a + in L (EpAnn lr (AnnContext (Just (epUniTok lt)) o c) (cs Semi.<> csc)) a -- ------------------------------------- diff --git a/compiler/GHC/Parser/Annotation.hs b/compiler/GHC/Parser/Annotation.hs index 141547333c3cff363ff8b3d8efd66997f6fe44a2..f84e54e2261e3eb675ee623c2371e2d113360583 100644 --- a/compiler/GHC/Parser/Annotation.hs +++ b/compiler/GHC/Parser/Annotation.hs @@ -10,7 +10,8 @@ module GHC.Parser.Annotation ( -- * Core Exact Print Annotation types AnnKeywordId(..), EpToken(..), EpUniToken(..), - getEpTokenSrcSpan, getEpTokenLocs, getEpTokenLoc, + getEpTokenSrcSpan, + getEpTokenLocs, getEpTokenLoc, getEpUniTokenLoc, TokDcolon, TokDarrow, TokRarrow, TokForall, EpLayout(..), EpaComment(..), EpaCommentTok(..), @@ -19,7 +20,6 @@ module GHC.Parser.Annotation ( HasE(..), -- * In-tree Exact Print Annotations - AddEpAnn(..), addEpAnnLoc, EpaLocation, EpaLocation'(..), epaLocationRealSrcSpan, TokenLocation(..), DeltaPos(..), deltaPos, getDeltaLine, @@ -46,8 +46,8 @@ module GHC.Parser.Annotation ( -- ** Annotation data types used in 'GenLocated' - AnnListItem(..), AnnList(..), - AnnParen(..), ParenType(..), parenTypeKws, + AnnListItem(..), AnnList(..), AnnListBrackets(..), + AnnParen(..), AnnPragma(..), AnnContext(..), NameAnn(..), NameAdornment(..), @@ -55,7 +55,7 @@ module GHC.Parser.Annotation ( AnnSortKey(..), DeclTag(..), BindTag(..), -- ** Trailing annotations in lists - TrailingAnn(..), trailingAnnToAddEpAnn, + TrailingAnn(..), addTrailingAnnToA, addTrailingAnnToL, addTrailingCommaToN, noTrailingN, @@ -411,6 +411,10 @@ getEpTokenLoc :: EpToken tok -> EpaLocation getEpTokenLoc NoEpTok = noAnn getEpTokenLoc (EpTok l) = l +getEpUniTokenLoc :: EpUniToken tok toku -> EpaLocation +getEpUniTokenLoc NoEpUniTok = noAnn +getEpUniTokenLoc (EpUniTok l _) = l + -- TODO:AZ: check we have all of the unicode tokens type TokDcolon = EpUniToken "::" "∷" type TokDarrow = EpUniToken "=>" "⇒" @@ -472,20 +476,6 @@ instance Outputable EpaComment where -- --------------------------------------------------------------------- --- | Captures an annotation, storing the @'AnnKeywordId'@ and its --- location. The parser only ever inserts @'EpaLocation'@ fields with a --- RealSrcSpan being the original location of the annotation in the --- source file. --- The @'EpaLocation'@ can also store a delta position if the AST has been --- modified and needs to be pretty printed again. --- The usual way an 'AddEpAnn' is created is using the 'mj' ("make --- jump") function, and then it can be inserted into the appropriate --- annotation. -data AddEpAnn = AddEpAnn AnnKeywordId EpaLocation deriving (Data,Eq) - -addEpAnnLoc :: AddEpAnn -> EpaLocation -addEpAnnLoc (AddEpAnn _ l) = l - type EpaLocation = EpaLocation' [LEpaComment] epaToNoCommentsLocation :: EpaLocation -> NoCommentsLocation @@ -512,9 +502,6 @@ epaLocationRealSrcSpan :: EpaLocation -> RealSrcSpan epaLocationRealSrcSpan (EpaSpan (RealSrcSpan r _)) = r epaLocationRealSrcSpan _ = panic "epaLocationRealSrcSpan" -instance Outputable AddEpAnn where - ppr (AddEpAnn kw ss) = text "AddEpAnn" <+> ppr kw <+> ppr ss - -- --------------------------------------------------------------------- -- | The exact print annotations (EPAs) are kept in the HsSyn AST for @@ -701,8 +688,7 @@ data AnnListItem data AnnList a = AnnList { al_anchor :: !(Maybe EpaLocation), -- ^ start point of a list having layout - al_open :: !(Maybe AddEpAnn), - al_close :: !(Maybe AddEpAnn), + al_brackets :: !AnnListBrackets, al_semis :: [EpToken ";"], -- decls al_rest :: !a, al_trailing :: ![TrailingAnn] -- ^ items appearing after the @@ -710,6 +696,14 @@ data AnnList a -- context } deriving (Data,Eq) +data AnnListBrackets + = ListParens (EpToken "(") (EpToken ")") + | ListBraces (EpToken "{") (EpToken "}") + | ListSquare (EpToken "[") (EpToken "]") + | ListBanana (EpUniToken "(|" "⦇") (EpUniToken "|)" "⦈") + | ListNone + deriving (Data,Eq) + -- --------------------------------------------------------------------- -- Annotations for parenthesised elements, such as tuples, lists -- --------------------------------------------------------------------- @@ -717,35 +711,20 @@ data AnnList a -- | exact print annotation for an item having surrounding "brackets", such as -- tuples or lists data AnnParen - = AnnParen { - ap_adornment :: ParenType, - ap_open :: EpaLocation, - ap_close :: EpaLocation - } deriving (Data) - --- | Detail of the "brackets" used in an 'AnnParen' exact print annotation. -data ParenType - = AnnParens -- ^ '(', ')' - | AnnParensHash -- ^ '(#', '#)' - | AnnParensSquare -- ^ '[', ']' - deriving (Eq, Ord, Data, Show) - --- | Maps the 'ParenType' to the related opening and closing --- AnnKeywordId. Used when actually printing the item. -parenTypeKws :: ParenType -> (AnnKeywordId, AnnKeywordId) -parenTypeKws AnnParens = (AnnOpenP, AnnCloseP) -parenTypeKws AnnParensHash = (AnnOpenPH, AnnClosePH) -parenTypeKws AnnParensSquare = (AnnOpenS, AnnCloseS) + = AnnParens (EpToken "(") (EpToken ")") -- ^ '(', ')' + | AnnParensHash (EpToken "(#") (EpToken "#)") -- ^ '(#', '#)' + | AnnParensSquare (EpToken "[") (EpToken "]") -- ^ '[', ']' + deriving Data -- --------------------------------------------------------------------- -- | Exact print annotation for the 'Context' data type. data AnnContext = AnnContext { - ac_darrow :: Maybe (IsUnicodeSyntax, EpaLocation), - -- ^ location and encoding of the '=>', if present. - ac_open :: [EpaLocation], -- ^ zero or more opening parentheses. - ac_close :: [EpaLocation] -- ^ zero or more closing parentheses. + ac_darrow :: Maybe TokDarrow, + -- ^ location of the '=>', if present. + ac_open :: [EpToken "("], -- ^ zero or more opening parentheses. + ac_close :: [EpToken ")"] -- ^ zero or more closing parentheses. } deriving (Data) @@ -760,46 +739,37 @@ data NameAnn -- | Used for a name with an adornment, so '`foo`', '(bar)' = NameAnn { nann_adornment :: NameAdornment, - nann_open :: EpaLocation, nann_name :: EpaLocation, - nann_close :: EpaLocation, nann_trailing :: [TrailingAnn] } -- | Used for @(,,,)@, or @(#,,,#)@ | NameAnnCommas { nann_adornment :: NameAdornment, - nann_open :: EpaLocation, nann_commas :: [EpaLocation], - nann_close :: EpaLocation, nann_trailing :: [TrailingAnn] } -- | Used for @(# | | #)@ | NameAnnBars { - nann_adornment :: NameAdornment, - nann_open :: EpaLocation, + nann_parensh :: (EpToken "(#", EpToken "#)"), nann_bars :: [EpaLocation], - nann_close :: EpaLocation, nann_trailing :: [TrailingAnn] } -- | Used for @()@, @(##)@, @[]@ | NameAnnOnly { nann_adornment :: NameAdornment, - nann_open :: EpaLocation, - nann_close :: EpaLocation, nann_trailing :: [TrailingAnn] } -- | Used for @->@, as an identifier | NameAnnRArrow { - nann_unicode :: Bool, - nann_mopen :: Maybe EpaLocation, - nann_name :: EpaLocation, - nann_mclose :: Maybe EpaLocation, + nann_mopen :: Maybe (EpToken "("), + nann_arrow :: TokRarrow, + nann_mclose :: Maybe (EpToken ")"), nann_trailing :: [TrailingAnn] } -- | Used for an item with a leading @'@. The annotation for -- unquoted item is stored in 'nann_quoted'. | NameAnnQuote { - nann_quote :: EpaLocation, + nann_quote :: EpToken "'", nann_quoted :: SrcSpanAnnN, nann_trailing :: [TrailingAnn] } @@ -814,11 +784,13 @@ data NameAnn -- such as parens or backquotes. This data type identifies what -- particular pair are being used. data NameAdornment - = NameParens -- ^ '(' ')' - | NameParensHash -- ^ '(#' '#)' - | NameBackquotes -- ^ '`' - | NameSquare -- ^ '[' ']' - deriving (Eq, Ord, Data) + = NameParens (EpToken "(") (EpToken ")") -- ^ '(' ')' + | NameParensHash (EpToken "(#") (EpToken "#)")-- ^ '(#' '#)' + | NameBackquotes (EpToken "`") (EpToken "`")-- ^ '`' + | NameSquare (EpToken "[") (EpToken "]")-- ^ '[' ']' + | NameNoAdornment + deriving (Eq, Data) + -- --------------------------------------------------------------------- @@ -951,14 +923,6 @@ different lists we must manage. For this we use DeclTag. -- --------------------------------------------------------------------- --- | Convert a 'TrailingAnn' to an 'AddEpAnn' -trailingAnnToAddEpAnn :: TrailingAnn -> AddEpAnn -trailingAnnToAddEpAnn (AddSemiAnn ss) = AddEpAnn AnnSemi ss -trailingAnnToAddEpAnn (AddCommaAnn ss) = AddEpAnn AnnComma ss -trailingAnnToAddEpAnn (AddVbarAnn ss) = AddEpAnn AnnVbar ss -trailingAnnToAddEpAnn (AddDarrowUAnn ss) = AddEpAnn AnnDarrowU ss -trailingAnnToAddEpAnn (AddDarrowAnn ss) = AddEpAnn AnnDarrow ss - -- | Helper function used in the parser to add a 'TrailingAnn' items -- to an existing annotation. addTrailingAnnToL :: TrailingAnn -> EpAnnComments @@ -1324,15 +1288,15 @@ instance NoAnn EpaLocation where instance NoAnn AnnKeywordId where noAnn = Annlarrowtail {- gotta pick one -} -instance NoAnn AddEpAnn where - noAnn = AddEpAnn noAnn noAnn - instance NoAnn [a] where noAnn = [] instance NoAnn (Maybe a) where noAnn = Nothing +instance NoAnn a => NoAnn (Either a b) where + noAnn = Left noAnn + instance (NoAnn a, NoAnn b) => NoAnn (a, b) where noAnn = (noAnn, noAnn) @@ -1361,7 +1325,7 @@ instance NoAnn AnnContext where noAnn = AnnContext Nothing [] [] instance NoAnn a => NoAnn (AnnList a) where - noAnn = AnnList Nothing Nothing Nothing noAnn noAnn [] + noAnn = AnnList Nothing ListNone noAnn noAnn [] instance NoAnn NameAnn where noAnn = NameAnnTrailing [] @@ -1370,7 +1334,7 @@ instance NoAnn AnnPragma where noAnn = AnnPragma noAnn noAnn noAnn noAnn noAnn noAnn noAnn instance NoAnn AnnParen where - noAnn = AnnParen AnnParens noAnn noAnn + noAnn = AnnParens noAnn noAnn instance NoAnn (EpToken s) where noAnn = NoEpTok @@ -1428,37 +1392,47 @@ instance (Outputable e) => Outputable (GenLocated EpaLocation e) where ppr = pprLocated -instance Outputable ParenType where - ppr t = text (show t) +instance Outputable AnnParen where + ppr (AnnParens o c) = text "AnnParens" <+> ppr o <+> ppr c + ppr (AnnParensHash o c) = text "AnnParensHash" <+> ppr o <+> ppr c + ppr (AnnParensSquare o c) = text "AnnParensSquare" <+> ppr o <+> ppr c instance Outputable AnnListItem where ppr (AnnListItem ts) = text "AnnListItem" <+> ppr ts instance Outputable NameAdornment where - ppr NameParens = text "NameParens" - ppr NameParensHash = text "NameParensHash" - ppr NameBackquotes = text "NameBackquotes" - ppr NameSquare = text "NameSquare" + ppr (NameParens o c) = text "NameParens" <+> ppr o <+> ppr c + ppr (NameParensHash o c) = text "NameParensHash" <+> ppr o <+> ppr c + ppr (NameBackquotes o c) = text "NameBackquotes" <+> ppr o <+> ppr c + ppr (NameSquare o c) = text "NameSquare" <+> ppr o <+> ppr c + ppr NameNoAdornment = text "NameNoAdornment" instance Outputable NameAnn where - ppr (NameAnn a o n c t) - = text "NameAnn" <+> ppr a <+> ppr o <+> ppr n <+> ppr c <+> ppr t - ppr (NameAnnCommas a o n c t) - = text "NameAnnCommas" <+> ppr a <+> ppr o <+> ppr n <+> ppr c <+> ppr t - ppr (NameAnnBars a o n b t) - = text "NameAnnBars" <+> ppr a <+> ppr o <+> ppr n <+> ppr b <+> ppr t - ppr (NameAnnOnly a o c t) - = text "NameAnnOnly" <+> ppr a <+> ppr o <+> ppr c <+> ppr t - ppr (NameAnnRArrow u o n c t) - = text "NameAnnRArrow" <+> ppr u <+> ppr o <+> ppr n <+> ppr c <+> ppr t + ppr (NameAnn a n t) + = text "NameAnn" <+> ppr a <+> ppr n <+> ppr t + ppr (NameAnnCommas a n t) + = text "NameAnnCommas" <+> ppr a <+> ppr n <+> ppr t + ppr (NameAnnBars a n t) + = text "NameAnnBars" <+> ppr a <+> ppr n <+> ppr t + ppr (NameAnnOnly a t) + = text "NameAnnOnly" <+> ppr a <+> ppr t + ppr (NameAnnRArrow o n c t) + = text "NameAnnRArrow" <+> ppr o <+> ppr n <+> ppr c <+> ppr t ppr (NameAnnQuote q n t) = text "NameAnnQuote" <+> ppr q <+> ppr n <+> ppr t ppr (NameAnnTrailing t) = text "NameAnnTrailing" <+> ppr t instance (Outputable a) => Outputable (AnnList a) where - ppr (AnnList anc o c s a t) - = text "AnnList" <+> ppr anc <+> ppr o <+> ppr c <+> ppr s <+> ppr a <+> ppr t + ppr (AnnList anc p s a t) + = text "AnnList" <+> ppr anc <+> ppr p <+> ppr s <+> ppr a <+> ppr t + +instance Outputable AnnListBrackets where + ppr (ListParens o c) = text "ListParens" <+> ppr o <+> ppr c + ppr (ListBraces o c) = text "ListBraces" <+> ppr o <+> ppr c + ppr (ListSquare o c) = text "ListSquare" <+> ppr o <+> ppr c + ppr (ListBanana o c) = text "ListBanana" <+> ppr o <+> ppr c + ppr ListNone = text "ListNone" instance Outputable AnnPragma where ppr (AnnPragma o c s l ca t m) diff --git a/compiler/GHC/Parser/Lexer.x b/compiler/GHC/Parser/Lexer.x index 28a30bf081d6c4ed03fd8e669a384366d22108f4..2aed5ab9da00cfa83aa5e769426e3ab8f1cb7f1a 100644 --- a/compiler/GHC/Parser/Lexer.x +++ b/compiler/GHC/Parser/Lexer.x @@ -3631,7 +3631,7 @@ warn_unknown_prag prags span buf len buf2 = do -- TODO:AZ: we should have only mkParensEpToks. Delee mkParensEpAnn, mkParensLocs -- |Given a 'RealSrcSpan' that surrounds a 'HsPar' or 'HsParTy', generate --- 'AddEpAnn' values for the opening and closing bordering on the start +-- 'EpToken' values for the opening and closing bordering on the start -- and end of the span mkParensEpToks :: RealSrcSpan -> (EpToken "(", EpToken ")") mkParensEpToks ss = (EpTok (EpaSpan (RealSrcSpan lo Strict.Nothing)), diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs index 791ad3fccb32e15a4ab77dad7145f09aa5ae89c5..146d311bb012f31397ff68e414b61cd14a6f3f72 100644 --- a/compiler/GHC/Parser/PostProcess.hs +++ b/compiler/GHC/Parser/PostProcess.hs @@ -432,7 +432,7 @@ mkRoleAnnotDecl loc tycon roles anns mkMDo :: HsDoFlavour -> LocatedLW [ExprLStmt GhcPs] -> EpaLocation -> EpaLocation -> HsExpr GhcPs mkMDo ctxt stmts tok loc - = mkHsDoAnns ctxt stmts (AnnList (Just loc) Nothing Nothing [] tok []) + = mkHsDoAnns ctxt stmts (AnnList (Just loc) ListNone [] tok []) -- | Converts a list of 'LHsTyVarBndr's annotated with their 'Specificity' to -- binders without annotations. Only accepts specified variables, and errors if @@ -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 widenLocatedAnL. The AnnKeywordId is not used. + -- Return a EpaLocation for use in widenLocatedAnL. for_widening :: HsBndrVis GhcPs -> EpaLocation for_widening (HsBndrInvisible (EpTok loc)) = loc for_widening _ = noAnn @@ -1102,7 +1102,7 @@ checkTyClHdr is_cls ty let lr = combineSrcSpans (locA l1) (locA l) in - EpAnn (EpaSpan lr) (NameAnn NameParens (getEpTokenLoc o) ap (getEpTokenLoc c) ta) (csp0 Semi.<> csp) + EpAnn (EpaSpan lr) (NameAnn (NameParens o c) ap ta) (csp0 Semi.<> csp) -- | Yield a parse error if we have a function applied directly to a do block -- etc. and BlockArguments is not enabled. @@ -1148,13 +1148,13 @@ checkContext :: LHsType GhcPs -> P (LHsContext GhcPs) checkContext orig_t@(L (EpAnn l _ cs) _orig_t) = check ([],[],cs) orig_t where - check :: ([EpaLocation],[EpaLocation],EpAnnComments) + check :: ([EpToken "("],[EpToken ")"],EpAnnComments) -> LHsType GhcPs -> P (LHsContext GhcPs) - check (oparens,cparens,cs) (L _l (HsTupleTy ann' HsBoxedOrConstraintTuple ts)) + check (oparens,cparens,cs) (L _l (HsTupleTy (AnnParens o c) HsBoxedOrConstraintTuple ts)) -- (Eq a, Ord b) shows up as a tuple type. Only boxed tuples can -- be used as context constraints. -- Ditto () - = mkCTuple (oparens ++ [ap_open ann'], ap_close ann' : cparens, cs) ts + = mkCTuple (oparens ++ [o], c : cparens, cs) ts -- With NoListTuplePuns, contexts are parsed as data constructors, which causes failure -- downstream. @@ -1164,15 +1164,13 @@ checkContext orig_t@(L (EpAnn l _ cs) _orig_t) = True -> unprocessed False -> do let - ol = AddEpAnn AnnOpenP (getEpTokenLoc o) - cl = AddEpAnn AnnCloseP (getEpTokenLoc c) (op, cp) = case q of - EpTok ql -> ([AddEpAnn AnnSimpleQuote ql], [cl]) - _ -> ([ol], [cl]) - mkCTuple (oparens ++ (addLoc <$> op), (addLoc <$> cp) ++ cparens, cs) ts + EpTok ql -> ([EpTok ql], [c]) + _ -> ([o], [c]) + mkCTuple (oparens ++ op, cp ++ cparens, cs) ts check (opi,cpi,csi) (L _lp1 (HsParTy (o,c) ty)) -- to be sure HsParTy doesn't get into the way - = check (getEpTokenLoc o:opi, getEpTokenLoc c:cpi, csi) ty + = check (o:opi, c:cpi, csi) ty -- No need for anns, returning original check (_opi,_cpi,_csi) _t = unprocessed @@ -1180,7 +1178,6 @@ checkContext orig_t@(L (EpAnn l _ cs) _orig_t) = unprocessed = return (L (EpAnn l (AnnContext Nothing [] []) emptyComments) [orig_t]) - addLoc (AddEpAnn _ l) = l mkCTuple (oparens, cparens, cs) ts = -- Append parens so that the original order in the source is maintained @@ -1201,16 +1198,16 @@ checkContextExpr :: LHsExpr GhcPs -> PV (LocatedC [LHsExpr GhcPs]) checkContextExpr orig_expr@(L (EpAnn l _ cs) _) = check ([],[], cs) orig_expr where - check :: ([EpaLocation],[EpaLocation],EpAnnComments) + check :: ([EpToken "("],[EpToken ")"],EpAnnComments) -> LHsExpr GhcPs -> PV (LocatedC [LHsExpr GhcPs]) check (oparens,cparens,cs) (L _ (ExplicitTuple (ap_open, ap_close) tup_args boxity)) -- Neither unboxed tuples (#e1,e2#) nor tuple sections (e1,,e2,) can be a context | isBoxed boxity , Just es <- tupArgsPresent_maybe tup_args - = mkCTuple (oparens ++ [ap_open], ap_close : cparens, cs) es - check (opi, cpi, csi) (L _ (HsPar (EpTok open_tok, EpTok close_tok) expr)) + = mkCTuple (oparens ++ [EpTok ap_open], EpTok ap_close : cparens, cs) es + check (opi, cpi, csi) (L _ (HsPar (open_tok, close_tok) expr)) = check (opi ++ [open_tok], close_tok : cpi, csi) expr - check (oparens,cparens,cs) (L _ (HsVar _ (L (EpAnn _ (NameAnnOnly NameParens open closed []) _) name))) + check (oparens,cparens,cs) (L _ (HsVar _ (L (EpAnn _ (NameAnnOnly (NameParens open closed) []) _) name))) | name == nameRdrName (dataConName unitDataCon) = mkCTuple (oparens ++ [open], closed : cparens, cs) [] check _ _ = unprocessed @@ -1842,7 +1839,7 @@ instance DisambECP (HsCmd GhcPs) where return $ L (EpAnn (spanAsAnchor l) noAnn cs) (mkHsCmdIf c a b anns) mkHsDoPV l Nothing stmts tok_loc anc = do !cs <- getCommentsFor l - return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdDo (AnnList (Just anc) Nothing Nothing [] tok_loc []) stmts) + return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdDo (AnnList (Just anc) ListNone [] tok_loc []) stmts) mkHsDoPV l (Just m) _ _ _ = addFatalError $ mkPlainErrorMsgEnvelope l $ PsErrQualifiedDoInCmd m mkHsParPV l lpar c rpar = do !cs <- getCommentsFor l @@ -1939,7 +1936,7 @@ instance DisambECP (HsExpr GhcPs) where return $ L (EpAnn (spanAsAnchor l) noAnn cs) (mkHsIf c a b anns) mkHsDoPV l mod stmts loc_tok anc = do !cs <- getCommentsFor l - return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsDo (AnnList (Just anc) Nothing Nothing [] loc_tok []) (DoExpr mod) stmts) + return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsDo (AnnList (Just anc) ListNone [] loc_tok []) (DoExpr mod) stmts) mkHsParPV l lpar e rpar = do !cs <- getCommentsFor l return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsPar (lpar, rpar) e) @@ -3614,9 +3611,9 @@ withCombinedComments start end use = do -- type or data constructor, based on the extension @ListTuplePuns@. -- The case with an explicit promotion quote, @'(Int, Double)@, is handled -- by 'mkExplicitTupleTy'. -mkTupleSyntaxTy :: EpaLocation +mkTupleSyntaxTy :: EpToken "(" -> [LocatedA (HsType GhcPs)] - -> EpaLocation + -> EpToken ")" -> P (HsType GhcPs) mkTupleSyntaxTy parOpen args parClose = punsIfElse enabled disabled @@ -3626,8 +3623,8 @@ mkTupleSyntaxTy parOpen args parClose = disabled = HsExplicitTupleTy annsKeyword args - annParen = AnnParen AnnParens parOpen parClose - annsKeyword = (NoEpTok, EpTok parOpen, EpTok parClose) + annParen = AnnParens parOpen parClose + annsKeyword = (NoEpTok, parOpen, parClose) -- | Decide whether to parse tuple con syntax @(,)@ in a type as a -- type or data constructor, based on the extension @ListTuplePuns@. @@ -3643,8 +3640,8 @@ mkTupleSyntaxTycon boxity n = -- constructor, based on the extension @ListTuplePuns@. -- The case with an explicit promotion quote, @'[]@, is handled by -- 'mkExplicitListTy'. -mkListSyntaxTy0 :: EpaLocation - -> EpaLocation +mkListSyntaxTy0 :: EpToken "[" + -> EpToken "]" -> SrcSpan -> P (HsType GhcPs) mkListSyntaxTy0 brkOpen brkClose span = @@ -3658,17 +3655,17 @@ mkListSyntaxTy0 brkOpen brkClose span = disabled = HsExplicitListTy annsKeyword NotPromoted [] - rdrNameAnn = NameAnnOnly NameSquare brkOpen brkClose [] - annsKeyword = (NoEpTok, EpTok brkOpen, EpTok brkClose) + rdrNameAnn = NameAnnOnly (NameSquare brkOpen brkClose) [] + annsKeyword = (NoEpTok, brkOpen, brkClose) fullLoc = EpaSpan span -- | Decide whether to parse list type syntax @[Int]@ in a type as a -- type or data constructor, based on the extension @ListTuplePuns@. -- The case with an explicit promotion quote, @'[Int]@, is handled -- by 'mkExplicitListTy'. -mkListSyntaxTy1 :: EpaLocation +mkListSyntaxTy1 :: EpToken "[" -> LocatedA (HsType GhcPs) - -> EpaLocation + -> EpToken "]" -> P (HsType GhcPs) mkListSyntaxTy1 brkOpen t brkClose = punsIfElse enabled disabled @@ -3678,5 +3675,5 @@ mkListSyntaxTy1 brkOpen t brkClose = disabled = HsExplicitListTy annsKeyword NotPromoted [t] - annsKeyword = (NoEpTok, EpTok brkOpen, EpTok brkClose) - annParen = AnnParen AnnParensSquare brkOpen brkClose + annsKeyword = (NoEpTok, brkOpen, brkClose) + annParen = AnnParensSquare brkOpen brkClose diff --git a/testsuite/tests/ghc-api/exactprint/T22919.stderr b/testsuite/tests/ghc-api/exactprint/T22919.stderr index 7de5790406a3a3569dc2697de1e0dd601b2cb389..cbda59b70c973ff27cb8179328c9beac4ed0b8f7 100644 --- a/testsuite/tests/ghc-api/exactprint/T22919.stderr +++ b/testsuite/tests/ghc-api/exactprint/T22919.stderr @@ -70,8 +70,7 @@ (EpaSpan { T22919.hs:2:1-9 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -119,7 +118,9 @@ (EpaSpan { T22919.hs:2:5-9 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T22919.hs:2:5 }))) + (Left + (EpTok + (EpaSpan { T22919.hs:2:5 })))) (EpaComments [])) [] diff --git a/testsuite/tests/ghc-api/exactprint/Test20239.stderr b/testsuite/tests/ghc-api/exactprint/Test20239.stderr index 263b815b17bf1d31a4f451281b4fcaca30a15fda..8f710f550db4a71f000a9f3ff220bf14bac174e4 100644 --- a/testsuite/tests/ghc-api/exactprint/Test20239.stderr +++ b/testsuite/tests/ghc-api/exactprint/Test20239.stderr @@ -366,10 +366,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { Test20239.hs:7:83 }) - (EpaSpan { Test20239.hs:7:84 })) + (AnnParens + (EpTok + (EpaSpan { Test20239.hs:7:83 })) + (EpTok + (EpaSpan { Test20239.hs:7:84 }))) (HsBoxedOrConstraintTuple) [])))))))))))))]) (Nothing)))]) diff --git a/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr b/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr index dbb7d938d748775ee328806b8b8d0ea3fc60f5a1..8a1db6bb1e8372c094ab6cb1cd0041b465bd94bd 100644 --- a/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr +++ b/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr @@ -82,8 +82,7 @@ (EpaSpan { ZeroWidthSemi.hs:6:1-5 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -131,7 +130,9 @@ (EpaSpan { ZeroWidthSemi.hs:6:3-5 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { ZeroWidthSemi.hs:6:3 }))) + (Left + (EpTok + (EpaSpan { ZeroWidthSemi.hs:6:3 })))) (EpaComments [])) [] diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr index 853046201c8aec07296bcbe2294d415d8be95983..5caab76b718ec3cbc510390280a326e2d7e3f6f2 100644 --- a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr +++ b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr @@ -257,10 +257,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { T17544_kw.hs:19:18 }) - (EpaSpan { T17544_kw.hs:19:19 })) + (AnnParens + (EpTok + (EpaSpan { T17544_kw.hs:19:18 })) + (EpTok + (EpaSpan { T17544_kw.hs:19:19 }))) (HsBoxedOrConstraintTuple) [])))]) (L diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr index 6f7437117dbf5c57dbe1a7c06a03cfe46637b267..5f816ad6f561e068312615a8b573cbf74f2c5cb5 100644 --- a/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr +++ b/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr @@ -848,10 +848,9 @@ (AnnList (Just (EpaSpan { T24221.hs:28:12-20 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { T24221.hs:28:10 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { T24221.hs:29:22 }))) + (ListBraces + (EpTok (EpaSpan { T24221.hs:28:10 })) + (EpTok (EpaSpan { T24221.hs:29:22 }))) [] (()) []) @@ -1057,10 +1056,9 @@ (AnnList (Just (EpaSpan { T24221.hs:33:7-15 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { T24221.hs:33:5 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { T24221.hs:34:17 }))) + (ListBraces + (EpTok (EpaSpan { T24221.hs:33:5 })) + (EpTok (EpaSpan { T24221.hs:34:17 }))) [] (()) []) @@ -1278,10 +1276,9 @@ (AnnList (Just (EpaSpan { T24221.hs:40:5-13 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { T24221.hs:38:10 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { T24221.hs:43:3 }))) + (ListBraces + (EpTok (EpaSpan { T24221.hs:38:10 })) + (EpTok (EpaSpan { T24221.hs:43:3 }))) [] (()) []) diff --git a/testsuite/tests/module/mod185.stderr b/testsuite/tests/module/mod185.stderr index c87a1c93fca5716152c553c3ada6df1fc0cf16b9..352f489d3a490b0a858b24ee0396964135c454e8 100644 --- a/testsuite/tests/module/mod185.stderr +++ b/testsuite/tests/module/mod185.stderr @@ -90,8 +90,7 @@ (EpaSpan { mod185.hs:5:1-24 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -139,7 +138,9 @@ (EpaSpan { mod185.hs:5:6-24 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { mod185.hs:5:6 }))) + (Left + (EpTok + (EpaSpan { mod185.hs:5:6 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr index f8333aed8fafcf09b890a197e716c6db1a8cac66..d2755f2c16492ec48c8b854a4659b21f6c0e0ec2 100644 --- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr @@ -254,10 +254,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpParsedAst.hs:9:16 }) - (EpaSpan { DumpParsedAst.hs:9:18 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpParsedAst.hs:9:16 })) + (EpTok + (EpaSpan { DumpParsedAst.hs:9:18 }))) (L (EpAnn (EpaSpan { DumpParsedAst.hs:9:17 }) @@ -626,10 +627,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpParsedAst.hs:10:27 }) - (EpaSpan { DumpParsedAst.hs:10:29 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpParsedAst.hs:10:27 })) + (EpTok + (EpaSpan { DumpParsedAst.hs:10:29 }))) (L (EpAnn (EpaSpan { DumpParsedAst.hs:10:28 }) @@ -2140,8 +2142,7 @@ (EpaSpan { DumpParsedAst.hs:25:1-23 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -2189,7 +2190,9 @@ (EpaSpan { DumpParsedAst.hs:25:6-23 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:25:6 }))) + (Left + (EpTok + (EpaSpan { DumpParsedAst.hs:25:6 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr b/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr index 68c4642396ca21356be4eecfe457b3236e49b2c9..cef30f2bbfd8aed56a5c2942769831f555aea3f3 100644 --- a/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr +++ b/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr @@ -90,8 +90,7 @@ (EpaSpan { DumpParsedAstComments.hs:9:1-7 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -139,7 +138,9 @@ (EpaSpan { DumpParsedAstComments.hs:9:5-7 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpParsedAstComments.hs:9:5 }))) + (Left + (EpTok + (EpaSpan { DumpParsedAstComments.hs:9:5 })))) (EpaComments [])) [] @@ -208,8 +209,7 @@ (EpaSpan { DumpParsedAstComments.hs:(14,1)-(16,3) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -257,7 +257,9 @@ (EpaSpan { DumpParsedAstComments.hs:(14,5)-(16,3) }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpParsedAstComments.hs:14:5 }))) + (Left + (EpTok + (EpaSpan { DumpParsedAstComments.hs:14:5 })))) (EpaComments [])) [] @@ -278,8 +280,7 @@ (AnnList (Just (EpaSpan { DumpParsedAstComments.hs:16:3 })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { DumpParsedAstComments.hs:14:7-8 }) []) @@ -291,8 +292,7 @@ (AnnList (Just (EpaSpan { DumpParsedAstComments.hs:16:3 })) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -360,8 +360,7 @@ (EpaSpan { DumpParsedAstComments.hs:19:1-23 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -409,7 +408,9 @@ (EpaSpan { DumpParsedAstComments.hs:19:6-23 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpParsedAstComments.hs:19:6 }))) + (Left + (EpTok + (EpaSpan { DumpParsedAstComments.hs:19:6 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr index 041e759bc53cfc3712ccce9c2caa66e8c3f0d2f8..d51f6b58e9b9cb997ef2a1ac678b1a7436059fa3 100644 --- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr @@ -34,8 +34,7 @@ (EpaSpan { DumpRenamedAst.hs:35:1-23 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -82,7 +81,8 @@ (EpaDelta { <no location info> } (SameLine 0) []) (GrhsAnn (Nothing) - (AddEpAnn Annlarrowtail (EpaDelta { <no location info> } (SameLine 0) []))) + (Left + (NoEpTok))) (EpaComments [])) [] @@ -548,10 +548,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpRenamedAst.hs:12:27 }) - (EpaSpan { DumpRenamedAst.hs:12:29 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpRenamedAst.hs:12:27 })) + (EpTok + (EpaSpan { DumpRenamedAst.hs:12:29 }))) (L (EpAnn (EpaSpan { DumpRenamedAst.hs:12:28 }) @@ -646,10 +647,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpRenamedAst.hs:11:16 }) - (EpaSpan { DumpRenamedAst.hs:11:18 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpRenamedAst.hs:11:16 })) + (EpTok + (EpaSpan { DumpRenamedAst.hs:11:18 }))) (L (EpAnn (EpaSpan { DumpRenamedAst.hs:11:17 }) @@ -2231,10 +2233,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpRenamedAst.hs:31:12 }) - (EpaSpan { DumpRenamedAst.hs:31:14 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpRenamedAst.hs:31:12 })) + (EpTok + (EpaSpan { DumpRenamedAst.hs:31:14 }))) (L (EpAnn (EpaSpan { DumpRenamedAst.hs:31:13 }) @@ -2292,10 +2295,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { DumpRenamedAst.hs:32:10 }) - (EpaSpan { DumpRenamedAst.hs:32:12 })) + (AnnParensSquare + (EpTok + (EpaSpan { DumpRenamedAst.hs:32:10 })) + (EpTok + (EpaSpan { DumpRenamedAst.hs:32:12 }))) (L (EpAnn (EpaSpan { DumpRenamedAst.hs:32:11 }) @@ -2532,10 +2536,11 @@ (EpaSpan { DumpRenamedAst.hs:7:18-23 }) (AnnList (Nothing) - (Just - (AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:7:18 }))) - (Just - (AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:7:23 }))) + (ListParens + (EpTok + (EpaSpan { DumpRenamedAst.hs:7:18 })) + (EpTok + (EpaSpan { DumpRenamedAst.hs:7:23 }))) [] ((,) (NoEpTok) diff --git a/testsuite/tests/parser/should_compile/DumpSemis.stderr b/testsuite/tests/parser/should_compile/DumpSemis.stderr index 27553bdf784117d1090ada6b724d1aec06ecd662..e2812a4247fa2aefadf9797d5067a056690afb55 100644 --- a/testsuite/tests/parser/should_compile/DumpSemis.stderr +++ b/testsuite/tests/parser/should_compile/DumpSemis.stderr @@ -95,10 +95,11 @@ (EpaSpan { DumpSemis.hs:5:18-19 }) (AnnList (Nothing) - (Just - (AddEpAnn AnnOpenP (EpaSpan { DumpSemis.hs:5:18 }))) - (Just - (AddEpAnn AnnCloseP (EpaSpan { DumpSemis.hs:5:19 }))) + (ListParens + (EpTok + (EpaSpan { DumpSemis.hs:5:18 })) + (EpTok + (EpaSpan { DumpSemis.hs:5:19 }))) [] ((,) (NoEpTok) @@ -222,10 +223,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { DumpSemis.hs:9:11 }) - (EpaSpan { DumpSemis.hs:9:12 })) + (AnnParens + (EpTok + (EpaSpan { DumpSemis.hs:9:11 })) + (EpTok + (EpaSpan { DumpSemis.hs:9:12 }))) (HsBoxedOrConstraintTuple) [])))))))))) ,(L @@ -260,8 +262,7 @@ (EpaSpan { DumpSemis.hs:(10,1)-(12,3) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -309,7 +310,9 @@ (EpaSpan { DumpSemis.hs:(10,5)-(12,3) }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:10:5 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:10:5 })))) (EpaComments [])) [] @@ -324,8 +327,7 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:(11,3)-(12,3) })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { DumpSemis.hs:10:7-8 }) []) @@ -337,8 +339,7 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:(11,3)-(12,3) })) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -364,8 +365,7 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:11:6-15 })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { DumpSemis.hs:11:3-4 }) []) @@ -377,10 +377,9 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:11:8-13 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:11:6 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { DumpSemis.hs:11:15 }))) + (ListBraces + (EpTok (EpaSpan { DumpSemis.hs:11:6 })) + (EpTok (EpaSpan { DumpSemis.hs:11:15 }))) [(EpTok (EpaSpan { DumpSemis.hs:11:8 })) ,(EpTok @@ -529,10 +528,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { DumpSemis.hs:14:11 }) - (EpaSpan { DumpSemis.hs:14:12 })) + (AnnParens + (EpTok + (EpaSpan { DumpSemis.hs:14:11 })) + (EpTok + (EpaSpan { DumpSemis.hs:14:12 }))) (HsBoxedOrConstraintTuple) [])))))))))) ,(L @@ -569,8 +569,7 @@ (EpaSpan { DumpSemis.hs:(15,1)-(19,3) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -618,7 +617,9 @@ (EpaSpan { DumpSemis.hs:(15,5)-(19,3) }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:15:5 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:15:5 })))) (EpaComments [])) [] @@ -633,8 +634,7 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:(16,3)-(19,3) })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { DumpSemis.hs:15:7-8 }) []) @@ -646,10 +646,9 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:(16,5)-(18,5) })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:16:3 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { DumpSemis.hs:19:3 }))) + (ListBraces + (EpTok (EpaSpan { DumpSemis.hs:16:3 })) + (EpTok (EpaSpan { DumpSemis.hs:19:3 }))) [(EpTok (EpaSpan { DumpSemis.hs:16:5 })) ,(EpTok @@ -795,10 +794,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { DumpSemis.hs:21:11 }) - (EpaSpan { DumpSemis.hs:21:12 })) + (AnnParens + (EpTok + (EpaSpan { DumpSemis.hs:21:11 })) + (EpTok + (EpaSpan { DumpSemis.hs:21:12 }))) (HsBoxedOrConstraintTuple) [])))))))))) ,(L @@ -829,8 +829,7 @@ (EpaSpan { DumpSemis.hs:22:1-30 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -878,7 +877,9 @@ (EpaSpan { DumpSemis.hs:22:5-30 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:22:5 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:22:5 })))) (EpaComments [])) [] @@ -893,8 +894,7 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:22:10-30 })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { DumpSemis.hs:22:7-8 }) []) @@ -906,10 +906,9 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:22:12-28 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:22:10 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { DumpSemis.hs:22:30 }))) + (ListBraces + (EpTok (EpaSpan { DumpSemis.hs:22:10 })) + (EpTok (EpaSpan { DumpSemis.hs:22:30 }))) [(EpTok (EpaSpan { DumpSemis.hs:22:12 })) ,(EpTok @@ -1041,8 +1040,7 @@ (EpaSpan { DumpSemis.hs:24:1-13 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1090,7 +1088,9 @@ (EpaSpan { DumpSemis.hs:24:3-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:24:3 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:24:3 })))) (EpaComments [])) [] @@ -1141,8 +1141,7 @@ (EpaSpan { DumpSemis.hs:25:1-13 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1190,7 +1189,9 @@ (EpaSpan { DumpSemis.hs:25:3-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:25:3 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:25:3 })))) (EpaComments [])) [] @@ -1242,8 +1243,7 @@ (EpaSpan { DumpSemis.hs:26:1-13 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1291,7 +1291,9 @@ (EpaSpan { DumpSemis.hs:26:3-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:26:3 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:26:3 })))) (EpaComments [])) [] @@ -1548,13 +1550,17 @@ (EpaSpan { DumpSemis.hs:31:6-20 }) (AnnContext (Just - ((,) - (NormalSyntax) - (EpaSpan { DumpSemis.hs:31:22-23 }))) - [(EpaSpan { DumpSemis.hs:31:6 }) - ,(EpaSpan { DumpSemis.hs:31:7 })] - [(EpaSpan { DumpSemis.hs:31:19 }) - ,(EpaSpan { DumpSemis.hs:31:20 })]) + (EpUniTok + (EpaSpan { DumpSemis.hs:31:22-23 }) + (NormalSyntax))) + [(EpTok + (EpaSpan { DumpSemis.hs:31:6 })) + ,(EpTok + (EpaSpan { DumpSemis.hs:31:7 }))] + [(EpTok + (EpaSpan { DumpSemis.hs:31:19 })) + ,(EpTok + (EpaSpan { DumpSemis.hs:31:20 }))]) (EpaComments [])) [(L @@ -1735,8 +1741,7 @@ (EpaSpan { DumpSemis.hs:32:1-7 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1801,7 +1806,9 @@ (EpaSpan { DumpSemis.hs:32:5-7 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:32:5 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:32:5 })))) (EpaComments [])) [] @@ -1855,8 +1862,7 @@ (EpaSpan { DumpSemis.hs:34:8-35 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1904,7 +1910,9 @@ (EpaSpan { DumpSemis.hs:34:9-35 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:34:9 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:34:9 })))) (EpaComments [])) [] @@ -1927,10 +1935,9 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:34:14-30 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:34:13 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { DumpSemis.hs:34:31 }))) + (ListBraces + (EpTok (EpaSpan { DumpSemis.hs:34:13 })) + (EpTok (EpaSpan { DumpSemis.hs:34:31 }))) [(EpTok (EpaSpan { DumpSemis.hs:34:14 })) ,(EpTok @@ -1975,8 +1982,7 @@ (EpaSpan { DumpSemis.hs:34:19-21 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -2024,7 +2030,9 @@ (EpaSpan { DumpSemis.hs:34:20-21 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:34:20 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:34:20 })))) (EpaComments [])) [] @@ -2078,8 +2086,7 @@ (EpaSpan { DumpSemis.hs:34:24-26 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -2127,7 +2134,9 @@ (EpaSpan { DumpSemis.hs:34:25-26 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:34:25 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:34:25 })))) (EpaComments [])) [] @@ -2198,8 +2207,7 @@ (EpaSpan { DumpSemis.hs:(36,1)-(44,4) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -2264,7 +2272,9 @@ (EpaSpan { DumpSemis.hs:(36,7)-(44,4) }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpSemis.hs:36:7 }))) + (Left + (EpTok + (EpaSpan { DumpSemis.hs:36:7 })))) (EpaComments [])) [] @@ -2305,10 +2315,9 @@ (AnnList (Just (EpaSpan { DumpSemis.hs:(38,6)-(43,13) })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:38:4 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { DumpSemis.hs:44:4 }))) + (ListBraces + (EpTok (EpaSpan { DumpSemis.hs:38:4 })) + (EpTok (EpaSpan { DumpSemis.hs:44:4 }))) [(EpTok (EpaSpan { DumpSemis.hs:38:6 })) ,(EpTok @@ -2370,7 +2379,10 @@ (EpaSpan { DumpSemis.hs:39:8-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnRarrow (EpaSpan { DumpSemis.hs:39:8-9 }))) + (Right + (EpUniTok + (EpaSpan { DumpSemis.hs:39:8-9 }) + (NormalSyntax)))) (EpaComments [])) [] @@ -2439,7 +2451,10 @@ (EpaSpan { DumpSemis.hs:40:8-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnRarrow (EpaSpan { DumpSemis.hs:40:8-9 }))) + (Right + (EpUniTok + (EpaSpan { DumpSemis.hs:40:8-9 }) + (NormalSyntax)))) (EpaComments [])) [] @@ -2510,7 +2525,10 @@ (EpaSpan { DumpSemis.hs:41:8-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnRarrow (EpaSpan { DumpSemis.hs:41:8-9 }))) + (Right + (EpUniTok + (EpaSpan { DumpSemis.hs:41:8-9 }) + (NormalSyntax)))) (EpaComments [])) [] @@ -2583,7 +2601,10 @@ (EpaSpan { DumpSemis.hs:42:8-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnRarrow (EpaSpan { DumpSemis.hs:42:8-9 }))) + (Right + (EpUniTok + (EpaSpan { DumpSemis.hs:42:8-9 }) + (NormalSyntax)))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr index e393b3f8acdc0f2aab340443277324203c186df8..5be8c8cbb31785ca26371b606910e1e53dc7e034 100644 --- a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr @@ -1930,8 +1930,7 @@ (EpaSpan { DumpTypecheckedAst.hs:20:1-23 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1978,7 +1977,8 @@ (EpaDelta { <no location info> } (SameLine 0) []) (GrhsAnn (Nothing) - (AddEpAnn Annlarrowtail (EpaDelta { <no location info> } (SameLine 0) []))) + (Left + (NoEpTok))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/KindSigs.stderr b/testsuite/tests/parser/should_compile/KindSigs.stderr index 8c5fbb2aa8d69c999fbbe96a757c3867d153b4fe..a24398c9ba5ed3587eeca6df03e623c528705ce3 100644 --- a/testsuite/tests/parser/should_compile/KindSigs.stderr +++ b/testsuite/tests/parser/should_compile/KindSigs.stderr @@ -312,10 +312,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { KindSigs.hs:15:14 }) - (EpaSpan { KindSigs.hs:15:51 })) + (AnnParens + (EpTok + (EpaSpan { KindSigs.hs:15:14 })) + (EpTok + (EpaSpan { KindSigs.hs:15:51 }))) (HsBoxedOrConstraintTuple) [(L (EpAnn @@ -529,10 +530,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParensHash - (EpaSpan { KindSigs.hs:16:15-16 }) - (EpaSpan { KindSigs.hs:16:53-54 })) + (AnnParensHash + (EpTok + (EpaSpan { KindSigs.hs:16:15-16 })) + (EpTok + (EpaSpan { KindSigs.hs:16:53-54 }))) (HsUnboxedTuple) [(L (EpAnn @@ -719,10 +721,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { KindSigs.hs:19:12 }) - (EpaSpan { KindSigs.hs:19:26 })) + (AnnParensSquare + (EpTok + (EpaSpan { KindSigs.hs:19:12 })) + (EpTok + (EpaSpan { KindSigs.hs:19:26 }))) (L (EpAnn (EpaSpan { KindSigs.hs:19:14-24 }) @@ -949,10 +952,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { KindSigs.hs:22:34 }) - (EpaSpan { KindSigs.hs:22:35 })) + (AnnParens + (EpTok + (EpaSpan { KindSigs.hs:22:34 })) + (EpTok + (EpaSpan { KindSigs.hs:22:35 }))) (HsBoxedOrConstraintTuple) [])) (L @@ -1001,8 +1005,7 @@ (EpaSpan { KindSigs.hs:23:1-12 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1067,7 +1070,9 @@ (EpaSpan { KindSigs.hs:23:9-12 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:23:9 }))) + (Left + (EpTok + (EpaSpan { KindSigs.hs:23:9 })))) (EpaComments [])) [] @@ -1084,9 +1089,11 @@ (EpAnn (EpaSpan { KindSigs.hs:23:11-12 }) (NameAnnOnly - (NameParens) - (EpaSpan { KindSigs.hs:23:11 }) - (EpaSpan { KindSigs.hs:23:12 }) + (NameParens + (EpTok + (EpaSpan { KindSigs.hs:23:11 })) + (EpTok + (EpaSpan { KindSigs.hs:23:12 }))) []) (EpaComments [])) @@ -1479,10 +1486,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { KindSigs.hs:28:34 }) - (EpaSpan { KindSigs.hs:28:39 })) + (AnnParensSquare + (EpTok + (EpaSpan { KindSigs.hs:28:34 })) + (EpTok + (EpaSpan { KindSigs.hs:28:39 }))) (L (EpAnn (EpaSpan { KindSigs.hs:28:35-38 }) @@ -1727,8 +1735,7 @@ (EpaSpan { KindSigs.hs:35:1-11 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1776,7 +1783,9 @@ (EpaSpan { KindSigs.hs:35:6-11 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:35:6 }))) + (Left + (EpTok + (EpaSpan { KindSigs.hs:35:6 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/T14189.stderr b/testsuite/tests/parser/should_compile/T14189.stderr index 7a61b2d3ad04514b419ce91b7e3c1f495806729e..7455dddee632d551c9e7216f79f05ebb8221d8e3 100644 --- a/testsuite/tests/parser/should_compile/T14189.stderr +++ b/testsuite/tests/parser/should_compile/T14189.stderr @@ -151,10 +151,9 @@ (AnnList (Just (EpaSpan { T14189.hs:6:33-40 })) - (Just - (AddEpAnn AnnOpenC (EpaSpan { T14189.hs:6:31 }))) - (Just - (AddEpAnn AnnCloseC (EpaSpan { T14189.hs:6:42 }))) + (ListBraces + (EpTok (EpaSpan { T14189.hs:6:31 })) + (EpTok (EpaSpan { T14189.hs:6:42 }))) [] (()) []) diff --git a/testsuite/tests/parser/should_compile/T15279.stderr b/testsuite/tests/parser/should_compile/T15279.stderr index 8e7d98a995b3ade6197d3c94409979b5c6995f3b..c3d28abb030e6fb983b222aa7b4726e9cbbc5750 100644 --- a/testsuite/tests/parser/should_compile/T15279.stderr +++ b/testsuite/tests/parser/should_compile/T15279.stderr @@ -8,8 +8,12 @@ (EpAnn (EpaSpan { T15279.hs:1:1 }) (AnnsModule - [(AddEpAnn AnnModule (EpaSpan { T15279.hs:3:1-6 })) - ,(AddEpAnn AnnWhere (EpaSpan { T15279.hs:3:15-19 }))] + (NoEpTok) + (EpTok + (EpaSpan { T15279.hs:3:1-6 })) + (EpTok + (EpaSpan { T15279.hs:3:15-19 })) + [] [] (Just ((,) @@ -18,374 +22,354 @@ (EpaCommentsBalanced [] [])) - (VirtualBraces + (EpVirtualBraces (1)) (Nothing) (Nothing)) (Just (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:3:8-13 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:3:8-13 }) + (EpAnn + (EpaSpan { T15279.hs:3:8-13 }) + (AnnListItem + []) + (EpaComments + [])) {ModuleName: T15279})) (Nothing) [] [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:1-19 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:5:1-19 }) + (EpAnn + (EpaSpan { T15279.hs:5:1-19 }) + (AnnListItem + []) + (EpaComments + [])) (SigD (NoExtField) (TypeSig - (EpAnn - (EpaSpan { T15279.hs:5:1-19 }) - (AnnSig - (AddEpAnn AnnDcolon (EpaSpan { T15279.hs:5:5-6 })) - []) - (EpaComments - [])) + (AnnSig + (EpUniTok + (EpaSpan { T15279.hs:5:5-6 }) + (NormalSyntax)) + (Nothing) + (Nothing)) [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:1-3 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs:5:1-3 }) + (EpAnn + (EpaSpan { T15279.hs:5:1-3 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: foo}))] (HsWC (NoExtField) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:8-19 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:5:8-19 }) + (EpAnn + (EpaSpan { T15279.hs:5:8-19 }) + (AnnListItem + []) + (EpaComments + [])) (HsSig (NoExtField) (HsOuterImplicit (NoExtField)) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:8-19 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:5:8-19 }) + (EpAnn + (EpaSpan { T15279.hs:5:8-19 }) + (AnnListItem + []) + (EpaComments + [])) (HsFunTy - (EpAnn - (EpaSpan { T15279.hs:5:8-19 }) - (NoEpAnns) - (EpaComments - [])) + (NoExtField) (HsUnrestrictedArrow - (L - (TokenLoc - (EpaSpan { T15279.hs:5:13-14 })) - (HsNormalTok))) + (EpUniTok + (EpaSpan { T15279.hs:5:13-14 }) + (NormalSyntax))) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:8-11 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:5:8-11 }) + (EpAnn + (EpaSpan { T15279.hs:5:8-11 }) + (AnnListItem + []) + (EpaComments + [])) (HsTyVar - (EpAnn - (EpaSpan { T15279.hs:5:8-11 }) - [] - (EpaComments - [])) + (NoEpTok) (NotPromoted) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:8-11 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs:5:8-11 }) + (EpAnn + (EpaSpan { T15279.hs:5:8-11 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: Char})))) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:16-19 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:5:16-19 }) + (EpAnn + (EpaSpan { T15279.hs:5:16-19 }) + (AnnListItem + []) + (EpaComments + [])) (HsTyVar - (EpAnn - (EpaSpan { T15279.hs:5:16-19 }) - [] - (EpaComments - [])) + (NoEpTok) (NotPromoted) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:5:16-19 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs:5:16-19 }) + (EpAnn + (EpaSpan { T15279.hs:5:16-19 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: Char})))))))))))) ,(L - (SrcSpanAnn (EpAnn - (EpaSpan { foo:-1:-1 }) - (AnnListItem - []) - (EpaComments - [])) { <combineSrcSpans: files differ> }) + (EpAnn + (EpaSpan { <combineSrcSpans: files differ> }) + (AnnListItem + []) + (EpaComments + [])) (ValD (NoExtField) (FunBind (NoExtField) (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:1:1-3 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs-incl:1:1-3 }) + (EpAnn + (EpaSpan { T15279.hs-incl:1:1-3 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: foo})) (MG (FromSource) (L - (SrcSpanAnn (EpAnn - (EpaSpan { <combineSrcSpans: files differ> }) - (AnnList - (Nothing) - (Nothing) - (Nothing) - [] - []) - (EpaComments - [])) { <combineSrcSpans: files differ> }) + (EpAnn + (EpaSpan { <combineSrcSpans: files differ> }) + (AnnList + (Nothing) + (ListNone) + [] + (NoEpTok) + []) + (EpaComments + [])) [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:1:1-13 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:1:1-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:1:1-13 }) + (AnnListItem + []) + (EpaComments + [])) (Match - (EpAnn - (EpaSpan { T15279.hs-incl:1:1-13 }) - [] - (EpaComments - [])) + (NoExtField) (FunRhs (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:1:1-3 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs-incl:1:1-3 }) + (EpAnn + (EpaSpan { T15279.hs-incl:1:1-3 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: foo})) (Prefix) - (NoSrcStrict)) - [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:1:5-7 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:1:5-7 }) - (LitPat - (NoExtField) - (HsChar - (SourceText 'a') - ('a'))))] + (NoSrcStrict) + (AnnFunRhs + (NoEpTok) + [] + [])) + (L + (EpaSpan { T15279.hs-incl:1:5-7 }) + [(L + (EpAnn + (EpaSpan { T15279.hs-incl:1:5-7 }) + (AnnListItem + []) + (EpaComments + [])) + (LitPat + (NoExtField) + (HsChar + (SourceText 'a') + ('a'))))]) (GRHSs (EpaComments []) [(L - (SrcSpanAnn - (EpAnn - (EpaSpan { T15279.hs-incl:1:9-13 }) - (NoEpAnns) - (EpaComments - [])) - { T15279.hs-incl:1:9-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:1:9-13 }) + (NoEpAnns) + (EpaComments + [])) (GRHS (EpAnn (EpaSpan { T15279.hs-incl:1:9-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T15279.hs-incl:1:9 }))) + (Left + (EpTok + (EpaSpan { T15279.hs-incl:1:9 })))) (EpaComments [])) [] (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:1:11-13 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:1:11-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:1:11-13 }) + (AnnListItem + []) + (EpaComments + [])) (HsLit - (EpAnn - (EpaSpan { T15279.hs-incl:1:11-13 }) - (NoEpAnns) - (EpaComments - [])) + (NoExtField) (HsChar (SourceText 'b') ('b'))))))] (EmptyLocalBinds (NoExtField))))) ,(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:2:1-13 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:2:1-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:2:1-13 }) + (AnnListItem + []) + (EpaComments + [])) (Match - (EpAnn - (EpaSpan { T15279.hs-incl:2:1-13 }) - [] - (EpaComments - [])) + (NoExtField) (FunRhs (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:2:1-3 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs-incl:2:1-3 }) + (EpAnn + (EpaSpan { T15279.hs-incl:2:1-3 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: foo})) (Prefix) - (NoSrcStrict)) - [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:2:5-7 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:2:5-7 }) - (LitPat - (NoExtField) - (HsChar - (SourceText 'b') - ('b'))))] + (NoSrcStrict) + (AnnFunRhs + (NoEpTok) + [] + [])) + (L + (EpaSpan { T15279.hs-incl:2:5-7 }) + [(L + (EpAnn + (EpaSpan { T15279.hs-incl:2:5-7 }) + (AnnListItem + []) + (EpaComments + [])) + (LitPat + (NoExtField) + (HsChar + (SourceText 'b') + ('b'))))]) (GRHSs (EpaComments []) [(L - (SrcSpanAnn - (EpAnn - (EpaSpan { T15279.hs-incl:2:9-13 }) - (NoEpAnns) - (EpaComments - [])) - { T15279.hs-incl:2:9-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:2:9-13 }) + (NoEpAnns) + (EpaComments + [])) (GRHS (EpAnn (EpaSpan { T15279.hs-incl:2:9-13 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T15279.hs-incl:2:9 }))) + (Left + (EpTok + (EpaSpan { T15279.hs-incl:2:9 })))) (EpaComments [])) [] (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs-incl:2:11-13 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs-incl:2:11-13 }) + (EpAnn + (EpaSpan { T15279.hs-incl:2:11-13 }) + (AnnListItem + []) + (EpaComments + [])) (HsLit - (EpAnn - (EpaSpan { T15279.hs-incl:2:11-13 }) - (NoEpAnns) - (EpaComments - [])) + (NoExtField) (HsChar (SourceText 'c') ('c'))))))] (EmptyLocalBinds (NoExtField))))) ,(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:7:1-11 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:7:1-11 }) + (EpAnn + (EpaSpan { T15279.hs:7:1-11 }) + (AnnListItem + []) + (EpaComments + [])) (Match - (EpAnn - (EpaSpan { T15279.hs:7:1-11 }) - [] - (EpaComments - [])) + (NoExtField) (FunRhs (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:7:1-3 }) - (NameAnnTrailing - []) - (EpaComments - [])) { T15279.hs:7:1-3 }) + (EpAnn + (EpaSpan { T15279.hs:7:1-3 }) + (NameAnnTrailing + []) + (EpaComments + [])) (Unqual {OccName: foo})) (Prefix) - (NoSrcStrict)) - [(L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:7:5 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:7:5 }) - (WildPat - (NoExtField)))] + (NoSrcStrict) + (AnnFunRhs + (NoEpTok) + [] + [])) + (L + (EpaSpan { T15279.hs:7:5 }) + [(L + (EpAnn + (EpaSpan { T15279.hs:7:5 }) + (AnnListItem + []) + (EpaComments + [])) + (WildPat + (NoExtField)))]) (GRHSs (EpaComments []) [(L - (SrcSpanAnn - (EpAnn - (EpaSpan { T15279.hs:7:7-11 }) - (NoEpAnns) - (EpaComments - [])) - { T15279.hs:7:7-11 }) + (EpAnn + (EpaSpan { T15279.hs:7:7-11 }) + (NoEpAnns) + (EpaComments + [])) (GRHS (EpAnn (EpaSpan { T15279.hs:7:7-11 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T15279.hs:7:7 }))) + (Left + (EpTok + (EpaSpan { T15279.hs:7:7 })))) (EpaComments [])) [] (L - (SrcSpanAnn (EpAnn - (EpaSpan { T15279.hs:7:9-11 }) - (AnnListItem - []) - (EpaComments - [])) { T15279.hs:7:9-11 }) + (EpAnn + (EpaSpan { T15279.hs:7:9-11 }) + (AnnListItem + []) + (EpaComments + [])) (HsLit - (EpAnn - (EpaSpan { T15279.hs:7:9-11 }) - (NoEpAnns) - (EpaComments - [])) + (NoExtField) (HsChar (SourceText 'a') ('a'))))))] diff --git a/testsuite/tests/parser/should_compile/T15323.stderr b/testsuite/tests/parser/should_compile/T15323.stderr index 3ac898e61ef4bc372b70af7fe9e122be9649717b..cb33b73b57cda1ef9331825be80ce48e616e9e18 100644 --- a/testsuite/tests/parser/should_compile/T15323.stderr +++ b/testsuite/tests/parser/should_compile/T15323.stderr @@ -182,9 +182,9 @@ (EpaSpan { T15323.hs:6:31-36 }) (AnnContext (Just - ((,) - (NormalSyntax) - (EpaSpan { T15323.hs:6:38-39 }))) + (EpUniTok + (EpaSpan { T15323.hs:6:38-39 }) + (NormalSyntax))) [] []) (EpaComments diff --git a/testsuite/tests/parser/should_compile/T20452.stderr b/testsuite/tests/parser/should_compile/T20452.stderr index d71610b98aeb3a918252ab519e11e56ecbc6c256..371e76399ecfe3d457170550ab3a6a2b37aaead1 100644 --- a/testsuite/tests/parser/should_compile/T20452.stderr +++ b/testsuite/tests/parser/should_compile/T20452.stderr @@ -455,10 +455,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { T20452.hs:8:57 }) - (EpaSpan { T20452.hs:8:74 })) + (AnnParensSquare + (EpTok + (EpaSpan { T20452.hs:8:57 })) + (EpTok + (EpaSpan { T20452.hs:8:74 }))) (L (EpAnn (EpaSpan { T20452.hs:8:58-73 }) @@ -467,10 +468,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { T20452.hs:8:58 }) - (EpaSpan { T20452.hs:8:73 })) + (AnnParens + (EpTok + (EpaSpan { T20452.hs:8:58 })) + (EpTok + (EpaSpan { T20452.hs:8:73 }))) (HsBoxedOrConstraintTuple) [(L (EpAnn @@ -698,10 +700,11 @@ (EpaComments [])) (HsListTy - (AnnParen - AnnParensSquare - (EpaSpan { T20452.hs:9:57 }) - (EpaSpan { T20452.hs:9:74 })) + (AnnParensSquare + (EpTok + (EpaSpan { T20452.hs:9:57 })) + (EpTok + (EpaSpan { T20452.hs:9:74 }))) (L (EpAnn (EpaSpan { T20452.hs:9:58-73 }) @@ -710,10 +713,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { T20452.hs:9:58 }) - (EpaSpan { T20452.hs:9:73 })) + (AnnParens + (EpTok + (EpaSpan { T20452.hs:9:58 })) + (EpTok + (EpaSpan { T20452.hs:9:73 }))) (HsBoxedOrConstraintTuple) [(L (EpAnn diff --git a/testsuite/tests/parser/should_compile/T20718.stderr b/testsuite/tests/parser/should_compile/T20718.stderr index 55dcdd7a351af23b1e1bcbce61980543de11879c..5519e9f576cb52180a7fe7e2a584a1a3b2784fb4 100644 --- a/testsuite/tests/parser/should_compile/T20718.stderr +++ b/testsuite/tests/parser/should_compile/T20718.stderr @@ -104,8 +104,7 @@ (EpaSpan { T20718.hs:8:1-5 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -153,7 +152,9 @@ (EpaSpan { T20718.hs:8:3-5 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T20718.hs:8:3 }))) + (Left + (EpTok + (EpaSpan { T20718.hs:8:3 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/T20846.stderr b/testsuite/tests/parser/should_compile/T20846.stderr index 73cfa28c85518d9ca45474f6e4410918e07a49e9..db161649fec90790e3d4b4542444188aa8ccaddc 100644 --- a/testsuite/tests/parser/should_compile/T20846.stderr +++ b/testsuite/tests/parser/should_compile/T20846.stderr @@ -93,8 +93,7 @@ (EpaSpan { T20846.hs:4:1-18 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -114,10 +113,12 @@ (EpAnn (EpaSpan { T20846.hs:4:1-6 }) (NameAnn - (NameParens) - (EpaSpan { T20846.hs:4:1 }) + (NameParens + (EpTok + (EpaSpan { T20846.hs:4:1 })) + (EpTok + (EpaSpan { T20846.hs:4:6 }))) (EpaSpan { T20846.hs:4:2-5 }) - (EpaSpan { T20846.hs:4:6 }) []) (EpaComments [])) @@ -146,7 +147,9 @@ (EpaSpan { T20846.hs:4:8-18 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { T20846.hs:4:8 }))) + (Left + (EpTok + (EpaSpan { T20846.hs:4:8 })))) (EpaComments [])) [] diff --git a/testsuite/tests/parser/should_compile/T23315/T23315.stderr b/testsuite/tests/parser/should_compile/T23315/T23315.stderr index ed040b8f904d435a5a75e686d9b3d37ae141974e..af261f7c4d60a65803f34019ab66a25800562aeb 100644 --- a/testsuite/tests/parser/should_compile/T23315/T23315.stderr +++ b/testsuite/tests/parser/should_compile/T23315/T23315.stderr @@ -101,10 +101,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { T23315.hsig:3:6 }) - (EpaSpan { T23315.hsig:3:7 })) + (AnnParens + (EpTok + (EpaSpan { T23315.hsig:3:6 })) + (EpTok + (EpaSpan { T23315.hsig:3:7 }))) (HsBoxedOrConstraintTuple) [])))))))) ,(L diff --git a/testsuite/tests/printer/Test20297.stdout b/testsuite/tests/printer/Test20297.stdout index 6629e01a58377c9a5b2bd50100ab0d3d27ede00c..d694a6b971d558562adb516973800a6734c37f74 100644 --- a/testsuite/tests/printer/Test20297.stdout +++ b/testsuite/tests/printer/Test20297.stdout @@ -70,8 +70,7 @@ (EpaSpan { Test20297.hs:(5,1)-(7,7) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -119,7 +118,9 @@ (EpaSpan { Test20297.hs:5:5-7 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.hs:5:5 }))) + (Left + (EpTok + (EpaSpan { Test20297.hs:5:5 })))) (EpaComments [(L (EpaSpan @@ -153,8 +154,7 @@ (AnnList (Just (EpaSpan { <no location info> })) - (Nothing) - (Nothing) + (ListNone) [] (EpTok (EpaSpan { Test20297.hs:7:3-7 })) @@ -198,8 +198,7 @@ (EpaSpan { Test20297.hs:(9,1)-(11,26) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -247,7 +246,9 @@ (EpaSpan { Test20297.hs:9:5-7 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.hs:9:5 }))) + (Left + (EpTok + (EpaSpan { Test20297.hs:9:5 })))) (EpaComments [])) [] @@ -275,8 +276,7 @@ (AnnList (Just (EpaSpan { Test20297.hs:11:9-26 })) - (Nothing) - (Nothing) + (ListNone) [] (EpTok (EpaSpan { Test20297.hs:10:3-7 })) @@ -316,8 +316,7 @@ (EpaSpan { Test20297.hs:11:9-26 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -365,7 +364,9 @@ (EpaSpan { Test20297.hs:11:17-26 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.hs:11:17 }))) + (Left + (EpTok + (EpaSpan { Test20297.hs:11:17 })))) (EpaComments [])) [] @@ -380,8 +381,7 @@ (AnnList (Just (EpaSpan { Test20297.hs:11:22-26 })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { Test20297.hs:11:19-20 }) []) @@ -393,8 +393,7 @@ (AnnList (Just (EpaSpan { Test20297.hs:11:22-26 })) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -506,8 +505,7 @@ (EpaSpan { Test20297.ppr.hs:(3,1)-(5,7) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -555,7 +553,9 @@ (EpaSpan { Test20297.ppr.hs:4:3-5 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.ppr.hs:4:3 }))) + (Left + (EpTok + (EpaSpan { Test20297.ppr.hs:4:3 })))) (EpaComments [])) [] @@ -583,8 +583,7 @@ (AnnList (Just (EpaSpan { <no location info> })) - (Nothing) - (Nothing) + (ListNone) [] (EpTok (EpaSpan { Test20297.ppr.hs:5:3-7 })) @@ -622,8 +621,7 @@ (EpaSpan { Test20297.ppr.hs:(6,1)-(9,24) }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -671,7 +669,9 @@ (EpaSpan { Test20297.ppr.hs:7:3-5 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.ppr.hs:7:3 }))) + (Left + (EpTok + (EpaSpan { Test20297.ppr.hs:7:3 })))) (EpaComments [])) [] @@ -699,8 +699,7 @@ (AnnList (Just (EpaSpan { Test20297.ppr.hs:9:7-24 })) - (Nothing) - (Nothing) + (ListNone) [] (EpTok (EpaSpan { Test20297.ppr.hs:8:3-7 })) @@ -734,8 +733,7 @@ (EpaSpan { Test20297.ppr.hs:9:7-24 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -783,7 +781,9 @@ (EpaSpan { Test20297.ppr.hs:9:15-24 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test20297.ppr.hs:9:15 }))) + (Left + (EpTok + (EpaSpan { Test20297.ppr.hs:9:15 })))) (EpaComments [])) [] @@ -798,8 +798,7 @@ (AnnList (Just (EpaSpan { Test20297.ppr.hs:9:20-24 })) - (Nothing) - (Nothing) + (ListNone) [] (EpaSpan { Test20297.ppr.hs:9:17-18 }) []) @@ -811,8 +810,7 @@ (AnnList (Just (EpaSpan { Test20297.ppr.hs:9:20-24 })) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) diff --git a/testsuite/tests/printer/Test24533.stdout b/testsuite/tests/printer/Test24533.stdout index d03fa3686c6566089be2536abc3912397c726f40..a731be9896faf39d76cdeb22213739f52b0950cf 100644 --- a/testsuite/tests/printer/Test24533.stdout +++ b/testsuite/tests/printer/Test24533.stdout @@ -89,11 +89,13 @@ (EpaSpan { Test24533.hs:(5,3)-(7,3) }) (AnnContext (Just - ((,) - (NormalSyntax) - (EpaSpan { Test24533.hs:7:5-6 }))) - [(EpaSpan { Test24533.hs:5:3 })] - [(EpaSpan { Test24533.hs:7:3 })]) + (EpUniTok + (EpaSpan { Test24533.hs:7:5-6 }) + (NormalSyntax))) + [(EpTok + (EpaSpan { Test24533.hs:5:3 }))] + [(EpTok + (EpaSpan { Test24533.hs:7:3 }))]) (EpaComments [(L (EpaSpan @@ -233,10 +235,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { Test24533.hs:8:8 }) - (EpaSpan { Test24533.hs:8:13 })) + (AnnParens + (EpTok + (EpaSpan { Test24533.hs:8:8 })) + (EpTok + (EpaSpan { Test24533.hs:8:13 }))) (HsBoxedOrConstraintTuple) [(L (EpAnn @@ -545,8 +548,7 @@ (EpaSpan { Test24533.hs:16:3-19 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -639,7 +641,9 @@ (EpaSpan { Test24533.hs:16:14-19 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test24533.hs:16:14 }))) + (Left + (EpTok + (EpaSpan { Test24533.hs:16:14 })))) (EpaComments [])) [] @@ -760,11 +764,13 @@ (EpaSpan { Test24533.ppr.hs:3:10-25 }) (AnnContext (Just - ((,) - (NormalSyntax) - (EpaSpan { Test24533.ppr.hs:3:27-28 }))) - [(EpaSpan { Test24533.ppr.hs:3:10 })] - [(EpaSpan { Test24533.ppr.hs:3:25 })]) + (EpUniTok + (EpaSpan { Test24533.ppr.hs:3:27-28 }) + (NormalSyntax))) + [(EpTok + (EpaSpan { Test24533.ppr.hs:3:10 }))] + [(EpTok + (EpaSpan { Test24533.ppr.hs:3:25 }))]) (EpaComments [])) [(L @@ -898,10 +904,11 @@ (EpaComments [])) (HsTupleTy - (AnnParen - AnnParens - (EpaSpan { Test24533.ppr.hs:3:35 }) - (EpaSpan { Test24533.ppr.hs:3:40 })) + (AnnParens + (EpTok + (EpaSpan { Test24533.ppr.hs:3:35 })) + (EpTok + (EpaSpan { Test24533.ppr.hs:3:40 }))) (HsBoxedOrConstraintTuple) [(L (EpAnn @@ -1143,8 +1150,7 @@ (EpaSpan { Test24533.ppr.hs:6:3-19 }) (AnnList (Nothing) - (Nothing) - (Nothing) + (ListNone) [] (NoEpTok) []) @@ -1237,7 +1243,9 @@ (EpaSpan { Test24533.ppr.hs:6:14-19 }) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { Test24533.ppr.hs:6:14 }))) + (Left + (EpTok + (EpaSpan { Test24533.ppr.hs:6:14 })))) (EpaComments [])) [] diff --git a/utils/check-exact/ExactPrint.hs b/utils/check-exact/ExactPrint.hs index 0de1b307b327017348ed818e13ba876d6547755e..992d19ba8d9ef3da2c54d5817912eb2cbb8a5313 100644 --- a/utils/check-exact/ExactPrint.hs +++ b/utils/check-exact/ExactPrint.hs @@ -264,14 +264,6 @@ instance HasTrailing EpaLocation where trailing _ = [] setTrailing a _ = a -instance HasTrailing AddEpAnn where - trailing _ = [] - setTrailing a _ = a - -instance HasTrailing (AddEpAnn, AddEpAnn) where - trailing _ = [] - setTrailing a _ = a - instance HasTrailing EpAnnSumPat where trailing _ = [] setTrailing a _ = a @@ -291,12 +283,12 @@ instance HasTrailing AnnPragma where instance HasTrailing AnnContext where trailing (AnnContext ma _opens _closes) = case ma of - Just (UnicodeSyntax, r) -> [AddDarrowUAnn r] - Just (NormalSyntax, r) -> [AddDarrowAnn r] - Nothing -> [] + Just (EpUniTok r UnicodeSyntax) -> [AddDarrowUAnn r] + Just (EpUniTok r NormalSyntax) -> [AddDarrowAnn r] + _ -> [] - setTrailing a [AddDarrowUAnn r] = a {ac_darrow = Just (UnicodeSyntax, r)} - setTrailing a [AddDarrowAnn r] = a{ac_darrow = Just (NormalSyntax, r)} + setTrailing a [AddDarrowUAnn r] = a {ac_darrow = Just (EpUniTok r UnicodeSyntax)} + setTrailing a [AddDarrowAnn r] = a{ac_darrow = Just (EpUniTok r NormalSyntax)} setTrailing a [] = a{ac_darrow = Nothing} setTrailing a ts = error $ "Cannot setTrailing " ++ showAst ts ++ " for " ++ showAst a @@ -776,33 +768,51 @@ markExternalSourceTextE l (SourceText txt) _ = printStringAtAA l (unpackFS txt) -- --------------------------------------------------------------------- -markLensMAA :: (Monad m, Monoid w) - => EpAnn a -> Lens a (Maybe AddEpAnn) -> EP w m (EpAnn a) -markLensMAA epann l = markLensMAA' epann (lepa . l) +markLensBracketsO :: (Monad m, Monoid w) + => EpAnn a -> Lens a AnnListBrackets -> EP w m (EpAnn a) +markLensBracketsO epann l = markLensBracketsO' epann (lepa . l) -markLensMAA' :: (Monad m, Monoid w) - => a -> Lens a (Maybe AddEpAnn) -> EP w m a -markLensMAA' a l = +markLensBracketsO' :: (Monad m, Monoid w) + => a -> Lens a AnnListBrackets -> EP w m a +markLensBracketsO' a l = case view l a of - Nothing -> return a - Just aa -> do - aa' <- markAddEpAnn aa - return (set l (Just aa') a) - + ListParens o c -> do + o' <- markEpToken o + return (set l (ListParens o' c) a) + ListBraces o c -> do + o' <- markEpToken o + return (set l (ListBraces o' c) a) + ListSquare o c -> do + o' <- markEpToken o + return (set l (ListSquare o' c) a) + ListBanana o c -> do + o' <- markEpUniToken o + return (set l (ListBanana o' c) a) + ListNone -> return (set l ListNone a) + +markLensBracketsC :: (Monad m, Monoid w) + => EpAnn a -> Lens a AnnListBrackets -> EP w m (EpAnn a) +markLensBracketsC epann l = markLensBracketsC' epann (lepa . l) + +markLensBracketsC' :: (Monad m, Monoid w) + => a -> Lens a AnnListBrackets -> EP w m a +markLensBracketsC' a l = + case view l a of + ListParens o c -> do + c' <- markEpToken c + return (set l (ListParens o c') a) + ListBraces o c -> do + c' <- markEpToken c + return (set l (ListBraces o c') a) + ListSquare o c -> do + c' <- markEpToken c + return (set l (ListSquare o c') a) + ListBanana o c -> do + c' <- markEpUniToken c + return (set l (ListBanana o c') a) + ListNone -> return (set l ListNone a) -- ------------------------------------- -markLensAA :: (Monad m, Monoid w) - => EpAnn a -> Lens a AddEpAnn -> EP w m (EpAnn a) -markLensAA epann l = markLensAA' epann (lepa . l) - -markLensAA' :: (Monad m, Monoid w) - => a -> Lens a AddEpAnn -> EP w m a -markLensAA' a l = do - a' <- markKw (view l a) - return (set l a' a) - --- --------------------------------------------------------------------- - -- markEpTokenM :: forall m w tok . (Monad m, Monoid w, KnownSymbol tok) -- => Maybe (EpToken tok) -> EP w m (Maybe (EpToken tok)) @@ -864,27 +874,32 @@ markAnnOpen'' el NoSourceText txt = printStringAtAA el txt markAnnOpen'' el (SourceText txt) _ = printStringAtAA el $ unpackFS txt -- --------------------------------------------------------------------- -{- -data AnnParen - = AnnParen { - ap_adornment :: ParenType, - ap_open :: EpaLocation, - ap_close :: EpaLocation - } deriving (Data) --} + markOpeningParen, markClosingParen :: (Monad m, Monoid w) => AnnParen -> EP w m AnnParen -markOpeningParen an = markParen an lfst -markClosingParen an = markParen an lsnd - -markParen :: (Monad m, Monoid w) => AnnParen -> (forall a. Lens (a,a) a) -> EP w m AnnParen -markParen (AnnParen pt o c) l = do - loc' <- markKwA (view l $ kw pt) (view l (o, c)) - let (o',c') = set l loc' (o,c) - return (AnnParen pt o' c') - where - kw AnnParens = (AnnOpenP, AnnCloseP) - kw AnnParensHash = (AnnOpenPH, AnnClosePH) - kw AnnParensSquare = (AnnOpenS, AnnCloseS) +markOpeningParen an = markParenO an +markClosingParen an = markParenC an + +markParenO :: (Monad m, Monoid w) => AnnParen -> EP w m AnnParen +markParenO (AnnParens o c) = do + o' <- markEpToken o + return (AnnParens o' c) +markParenO (AnnParensHash o c) = do + o' <- markEpToken o + return (AnnParensHash o' c) +markParenO (AnnParensSquare o c) = do + o' <- markEpToken o + return (AnnParensSquare o' c) + +markParenC :: (Monad m, Monoid w) => AnnParen -> EP w m AnnParen +markParenC (AnnParens o c) = do + c' <- markEpToken c + return (AnnParens o c') +markParenC (AnnParensHash o c) = do + c' <- markEpToken c + return (AnnParensHash o c') +markParenC (AnnParensSquare o c) = do + c' <- markEpToken c + return (AnnParensSquare o c') -- --------------------------------------------------------------------- -- Bare bones Optics @@ -990,8 +1005,7 @@ limportDeclAnnPackage k annImp = fmap (\new -> annImp { importDeclAnnPackage = n -- data AnnList -- = AnnList { -- al_anchor :: Maybe Anchor, -- ^ start point of a list having layout --- al_open :: Maybe AddEpAnn, --- al_close :: Maybe AddEpAnn, +-- al_brackets :: !AnnListBrackets, -- al_semis :: [EpToken ";"], -- decls -- al_rest :: !a, -- al_trailing :: [TrailingAnn] -- ^ items appearing after the @@ -999,13 +1013,9 @@ limportDeclAnnPackage k annImp = fmap (\new -> annImp { importDeclAnnPackage = n -- -- context -- } deriving (Data,Eq) -lal_open :: Lens (AnnList l) (Maybe AddEpAnn) -lal_open k parent = fmap (\new -> parent { al_open = new }) - (k (al_open parent)) - -lal_close :: Lens (AnnList l) (Maybe AddEpAnn) -lal_close k parent = fmap (\new -> parent { al_close = new }) - (k (al_close parent)) +lal_brackets :: Lens (AnnList l) AnnListBrackets +lal_brackets k parent = fmap (\new -> parent { al_brackets = new }) + (k (al_brackets parent)) lal_semis :: Lens (AnnList l) [EpToken ";"] lal_semis k parent = fmap (\new -> parent { al_semis = new }) @@ -1015,10 +1025,6 @@ lal_rest :: Lens (AnnList l) l lal_rest k parent = fmap (\new -> parent { al_rest = new }) (k (al_rest parent)) --- lal_trailing :: Lens AnnList [TrailingAnn] --- lal_trailing k parent = fmap (\new -> parent { al_trailing = new }) --- (k (al_trailing parent)) - -- ------------------------------------- lid :: Lens a a @@ -1201,15 +1207,15 @@ lra_rest k parent = fmap (\new -> parent { ra_rest = new }) -- --------------------------------------------------------------------- -- data GrhsAnn -- = GrhsAnn { --- ga_vbar :: Maybe EpaLocation, -- TODO:AZ do we need this? --- ga_sep :: AddEpAnn -- ^ Match separator location +-- ga_vbar :: Maybe (EpToken "|"), +-- ga_sep :: Either (EpToken "=") TokRarrow -- ^ Match separator location, `=` or `->` -- } deriving (Data) -lga_vbar :: Lens GrhsAnn (Maybe EpaLocation) +lga_vbar :: Lens GrhsAnn (Maybe (EpToken "|")) lga_vbar k parent = fmap (\new -> parent { ga_vbar = new }) (k (ga_vbar parent)) -lga_sep :: Lens GrhsAnn AddEpAnn +lga_sep :: Lens GrhsAnn (Either (EpToken "=") TokRarrow) lga_sep k parent = fmap (\new -> parent { ga_sep = new }) (k (ga_sep parent)) @@ -1322,43 +1328,6 @@ markEpaLocationAll :: (Monad m, Monoid w) => [EpaLocation] -> String -> EP w m [EpaLocation] markEpaLocationAll locs str = mapM (\l -> printStringAtAA l str) locs -markAddEpAnn :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn -markAddEpAnn a@(AddEpAnn kw _) = do - r <- mark [a] kw - case r of - [a'] -> return a' - _ -> error "Should not happen: markAddEpAnn" - -mark :: (Monad m, Monoid w) => [AddEpAnn] -> AnnKeywordId -> EP w m [AddEpAnn] -mark anns kw = do - case find' kw anns of - (lead, Just aa, end) -> do - aa' <- markKw aa - return (lead ++ [aa'] ++ end) - (_lead, Nothing, _end) -> case find' (unicodeAnn kw) anns of - (leadu, Just aau, endu) -> do - aau' <- markKw aau - return (leadu ++ [aau'] ++ endu) - (_,Nothing,_) -> return anns - --- | Find for update, returning lead section of the list, item if --- found, and tail of the list -find' :: AnnKeywordId -> [AddEpAnn] -> ([AddEpAnn], Maybe AddEpAnn, [AddEpAnn]) -find' kw anns = (lead, middle, end) - where - (lead, rest) = break (\(AddEpAnn k _) -> k == kw) anns - (middle,end) = case rest of - [] -> (Nothing, []) - (x:xs) -> (Just x, xs) - -markKw :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn -markKw an = markKwC CaptureComments an - -markKwC :: (Monad m, Monoid w) => CaptureComments -> AddEpAnn -> EP w m AddEpAnn -markKwC capture (AddEpAnn kw ss) = do - ss' <- markKwAC capture kw ss - return (AddEpAnn kw ss') - -- | This should be the main driver of the process, managing printing keywords. -- It returns the 'EpaDelta' variant of the passed in 'EpaLocation' markKwA :: (Monad m, Monoid w) => AnnKeywordId -> EpaLocation -> EP w m EpaLocation @@ -1397,10 +1366,10 @@ markAnnListA :: (Monad m, Monoid w) -> (EpAnn (AnnList l) -> EP w m (EpAnn (AnnList l), a)) -> EP w m (EpAnn (AnnList l), a) markAnnListA an action = do - an0 <- markLensMAA an lal_open + an0 <- markLensBracketsO an lal_brackets an1 <- markEpAnnAllLT an0 lal_semis (an2, r) <- action an1 - an3 <- markLensMAA an2 lal_close + an3 <- markLensBracketsC an2 lal_brackets return (an3, r) markAnnListA' :: (Monad m, Monoid w) @@ -1408,10 +1377,10 @@ markAnnListA' :: (Monad m, Monoid w) -> (AnnList l -> EP w m (AnnList l, a)) -> EP w m (AnnList l , a) markAnnListA' an action = do - an0 <- markLensMAA' an lal_open + an0 <- markLensBracketsO' an lal_brackets an1 <- markEpAnnAllLT' an0 lal_semis (an2, r) <- action an1 - an3 <- markLensMAA' an2 lal_close + an3 <- markLensBracketsC' an2 lal_brackets return (an3, r) -- --------------------------------------------------------------------- @@ -2906,9 +2875,12 @@ instance ExactPrint (GRHS GhcPs (LocatedA (HsExpr GhcPs))) where exact (GRHS an guards expr) = do an0 <- if null guards then return an - else markLensKwM an lga_vbar AnnVbar + else markLensFun' an lga_vbar (\mt -> mapM markEpToken mt) guards' <- markAnnotated guards - an1 <- markLensAA an0 lga_sep -- Mark the matchSeparator for these GRHSs + -- Mark the matchSeparator for these GRHSs + an1 <- markLensFun' an0 lga_sep (\s -> case s of + Left tok -> Left <$> markEpToken tok + Right tok -> Right <$> markEpUniToken tok) expr' <- markAnnotated expr return (GRHS an1 guards' expr') @@ -2917,9 +2889,12 @@ instance ExactPrint (GRHS GhcPs (LocatedA (HsCmd GhcPs))) where setAnnotationAnchor (GRHS an a b) anc ts cs = GRHS (setAnchorEpa an anc ts cs) a b exact (GRHS an guards expr) = do - an0 <- markLensKwM an lga_vbar AnnVbar + an0 <- markLensFun' an lga_vbar (\mt -> mapM markEpToken mt) guards' <- markAnnotated guards - an1 <- markLensAA an0 lga_sep -- Mark the matchSeparator for these GRHSs + -- Mark the matchSeparator for these GRHSs + an1 <- markLensFun' an0 lga_sep (\s -> case s of + Left tok -> Left <$> markEpToken tok + Right tok -> Right <$> markEpUniToken tok) expr' <- markAnnotated expr return (GRHS an1 guards' expr') @@ -3079,9 +3054,9 @@ instance ExactPrint (HsExpr GhcPs) where exact (ExplicitList an es) = do debugM $ "ExplicitList start" - an0 <- markLensMAA' an lal_open + an0 <- markLensBracketsO' an lal_brackets es' <- markAnnotated es - an1 <- markLensMAA' an0 lal_close + an1 <- markLensBracketsC' an0 lal_brackets debugM $ "ExplicitList end" return (ExplicitList an1 es') exact (RecordCon (open, close) con_id binds) = do @@ -3475,7 +3450,7 @@ instance ExactPrint (HsCmd GhcPs) where return (HsCmdArrApp (isU, l') arr' arg' HsHigherOrderApp False) exact (HsCmdArrForm an e fixity cs) = do - an0 <- markLensMAA' an lal_open + an0 <- markLensBracketsO' an lal_brackets (e',cs') <- case (fixity, cs) of (Infix, (arg1:argrest)) -> do arg1' <- markAnnotated arg1 @@ -3487,7 +3462,7 @@ instance ExactPrint (HsCmd GhcPs) where cs' <- markAnnotated cs return (e', cs') (Infix, []) -> error "Not possible" - an1 <- markLensMAA' an0 lal_close + an1 <- markLensBracketsC' an0 lal_brackets return (HsCmdArrForm an1 e' fixity cs') exact (HsCmdApp an e1 e2) = do @@ -3650,7 +3625,7 @@ instance ExactPrint (TyClDecl GhcPs) where epTokensToComments AnnCloseP cps t' <- markEpToken t - (_anx, ltycon', tyvars',_,_) <- exactVanillaDeclHead ltycon tyvars fixity Nothing + (_,ltycon', tyvars',_,_) <- exactVanillaDeclHead ltycon tyvars fixity Nothing eq' <- markEpToken eq rhs' <- markAnnotated rhs return (SynDecl { tcdSExt = AnnSynDecl [] [] t' eq' @@ -3659,7 +3634,7 @@ instance ExactPrint (TyClDecl GhcPs) where exact (DataDecl { tcdDExt = x, tcdLName = ltycon, tcdTyVars = tyvars , tcdFixity = fixity, tcdDataDefn = defn }) = do - (_, ltycon', tyvars', _, defn') <- + (_,ltycon', tyvars', _, defn') <- exactDataDefn (exactVanillaDeclHead ltycon tyvars fixity) defn return (DataDecl { tcdDExt = x, tcdLName = ltycon', tcdTyVars = tyvars' , tcdFixity = fixity, tcdDataDefn = defn' }) @@ -3717,7 +3692,7 @@ instance ExactPrint (TyClDecl GhcPs) where epTokensToComments AnnOpenP ops epTokensToComments AnnCloseP cps c' <- markEpToken c - (_, lclas', tyvars',_,context') <- exactVanillaDeclHead lclas tyvars fixity context + (_,lclas', tyvars',_,context') <- exactVanillaDeclHead lclas tyvars fixity context (vb', fds') <- if (null fds) then return (vb, fds) else do @@ -3759,7 +3734,7 @@ instance ExactPrint (FamilyDecl GhcPs) where epTokensToComments AnnOpenP ops epTokensToComments AnnCloseP cps - (_, ltycon', tyvars',_,_) <- exactVanillaDeclHead ltycon tyvars fixity Nothing + (_,ltycon', tyvars',_,_) <- exactVanillaDeclHead ltycon tyvars fixity Nothing (dc', eq', result') <- exact_kind (dc, eq) (vb', mb_inj') <- case mb_inj of @@ -3888,7 +3863,7 @@ exactVanillaDeclHead :: (Monad m, Monoid w) -> LHsQTyVars GhcPs -> LexicalFixity -> Maybe (LHsContext GhcPs) - -> EP w m ( [AddEpAnn] + -> EP w m ( () -- TO allow use in exactDataDefn , LocatedN RdrName , LHsQTyVars GhcPs , (), Maybe (LHsContext GhcPs)) @@ -3916,7 +3891,7 @@ exactVanillaDeclHead thing tvs@(HsQTvs { hsq_explicit = tyvars }) fixity context return (thing', []) context' <- mapM markAnnotated context (thing', tyvars') <- exact_tyvars tyvars - return (noAnn, thing', tvs { hsq_explicit = tyvars' }, (), context') + return ((), thing', tvs { hsq_explicit = tyvars' }, (), context') -- --------------------------------------------------------------------- @@ -4188,9 +4163,9 @@ instance (ExactPrint a) => ExactPrint (LocatedC a) where setAnnotationAnchor = setAnchorAn exact (L (EpAnn anc (AnnContext ma opens closes) cs) a) = do - opens' <- mapM (markKwA AnnOpenP) opens + opens' <- mapM markEpToken opens a' <- markAnnotated a - closes' <- mapM (markKwA AnnCloseP) closes + closes' <- mapM markEpToken closes return (L (EpAnn anc (AnnContext ma opens' closes') cs) a') -- --------------------------------------------------------------------- @@ -4226,46 +4201,33 @@ instance ExactPrint (LocatedN RdrName) where exact (L (EpAnn anc ann cs) n) = do ann' <- case ann of - NameAnn a o l c t -> do - mn <- markName a o (Just (l,n)) c + NameAnn a l t -> do + mn <- markName a (Just (l,n)) case mn of - (o', (Just (l',_n)), c') -> do - return (NameAnn a o' l' c' t) + (a', (Just (l',_n))) -> do + return (NameAnn a' l' t) _ -> error "ExactPrint (LocatedN RdrName)" - NameAnnCommas a o commas c t -> do - let (kwo,kwc) = adornments a - (AddEpAnn _ o') <- markKwC NoCaptureComments (AddEpAnn kwo o) - commas' <- forM commas (\loc -> locFromAdd <$> markKwC NoCaptureComments (AddEpAnn AnnComma loc)) - (AddEpAnn _ c') <- markKwC NoCaptureComments (AddEpAnn kwc c) - return (NameAnnCommas a o' commas' c' t) - NameAnnBars a o bars c t -> do - let (kwo,kwc) = adornments a - (AddEpAnn _ o') <- markKwC NoCaptureComments (AddEpAnn kwo o) - bars' <- forM bars (\loc -> locFromAdd <$> markKwC NoCaptureComments (AddEpAnn AnnVbar loc)) - (AddEpAnn _ c') <- markKwC NoCaptureComments (AddEpAnn kwc c) - return (NameAnnBars a o' bars' c' t) - NameAnnOnly a o c t -> do - (o',_,c') <- markName a o Nothing c - return (NameAnnOnly a o' c' t) - NameAnnRArrow unicode o nl c t -> do - o' <- case o of - Just o0 -> do - (AddEpAnn _ o') <- markKwC NoCaptureComments (AddEpAnn AnnOpenP o0) - return (Just o') - Nothing -> return Nothing - (AddEpAnn _ nl') <- - if unicode - then markKwC NoCaptureComments (AddEpAnn AnnRarrowU nl) - else markKwC NoCaptureComments (AddEpAnn AnnRarrow nl) - c' <- case c of - Just c0 -> do - (AddEpAnn _ c') <- markKwC NoCaptureComments (AddEpAnn AnnCloseP c0) - return (Just c') - Nothing -> return Nothing - return (NameAnnRArrow unicode o' nl' c' t) + NameAnnCommas a commas t -> do + a0 <- markNameAdornmentO a + commas' <- forM commas (\loc -> printStringAtAAC NoCaptureComments loc ",") + a1 <- markNameAdornmentC a0 + return (NameAnnCommas a1 commas' t) + NameAnnBars (o,c) bars t -> do + o' <- markEpToken o + bars' <- forM bars (\loc -> printStringAtAAC NoCaptureComments loc "|") + c' <- markEpToken c + return (NameAnnBars (o',c') bars' t) + NameAnnOnly a t -> do + (a',_) <- markName a Nothing + return (NameAnnOnly a' t) + NameAnnRArrow o nl c t -> do + o' <- mapM markEpToken o + nl' <- markEpUniToken nl + c' <- mapM markEpToken c + return (NameAnnRArrow o' nl' c' t) NameAnnQuote q name t -> do debugM $ "NameAnnQuote" - (AddEpAnn _ q') <- markKwC NoCaptureComments (AddEpAnn AnnSimpleQuote q) + q' <- markEpToken q (L name' _) <- markAnnotated (L name n) return (NameAnnQuote q' name' t) NameAnnTrailing t -> do @@ -4273,8 +4235,36 @@ instance ExactPrint (LocatedN RdrName) where return (NameAnnTrailing t) return (L (EpAnn anc ann' cs) n) -locFromAdd :: AddEpAnn -> EpaLocation -locFromAdd (AddEpAnn _ loc) = loc + +markNameAdornmentO :: (Monad m, Monoid w) => NameAdornment -> EP w m NameAdornment +markNameAdornmentO (NameParens o c) = do + o' <- markEpToken o + return (NameParens o' c) +markNameAdornmentO (NameParensHash o c) = do + o' <- markEpToken o + return (NameParensHash o' c) +markNameAdornmentO (NameBackquotes o c) = do + o' <- markEpToken o + return (NameBackquotes o' c) +markNameAdornmentO (NameSquare o c) = do + o' <- markEpToken o + return (NameSquare o' c) +markNameAdornmentO NameNoAdornment = return NameNoAdornment + +markNameAdornmentC :: (Monad m, Monoid w) => NameAdornment -> EP w m NameAdornment +markNameAdornmentC (NameParens o c) = do + c' <- markEpToken c + return (NameParens o c') +markNameAdornmentC (NameParensHash o c) = do + c' <- markEpToken c + return (NameParensHash o c') +markNameAdornmentC (NameBackquotes o c) = do + c' <- markEpToken c + return (NameBackquotes o c') +markNameAdornmentC (NameSquare o c) = do + c' <- markEpToken c + return (NameSquare o c') +markNameAdornmentC NameNoAdornment = return NameNoAdornment printUnicode :: (Monad m, Monoid w) => EpaLocation -> RdrName -> EP w m EpaLocation printUnicode anc n = do @@ -4290,25 +4280,18 @@ printUnicode anc n = do markName :: (Monad m, Monoid w) - => NameAdornment -> EpaLocation -> Maybe (EpaLocation,RdrName) -> EpaLocation - -> EP w m (EpaLocation, Maybe (EpaLocation,RdrName), EpaLocation) -markName adorn open mname close = do - let (kwo,kwc) = adornments adorn - (AddEpAnn _ open') <- markKwC CaptureComments (AddEpAnn kwo open) + => NameAdornment -> Maybe (EpaLocation,RdrName) + -> EP w m (NameAdornment, Maybe (EpaLocation,RdrName)) +markName adorn mname = do + adorn0 <- markNameAdornmentO adorn mname' <- case mname of Nothing -> return Nothing Just (name, a) -> do name' <- printStringAtAAC CaptureComments name (showPprUnsafe a) return (Just (name',a)) - (AddEpAnn _ close') <- markKwC CaptureComments (AddEpAnn kwc close) - return (open', mname', close') - -adornments :: NameAdornment -> (AnnKeywordId, AnnKeywordId) -adornments NameParens = (AnnOpenP, AnnCloseP) -adornments NameParensHash = (AnnOpenPH, AnnClosePH) -adornments NameBackquotes = (AnnBackquote, AnnBackquote) -adornments NameSquare = (AnnOpenS, AnnCloseS) + adorn1 <- markNameAdornmentC adorn0 + return (adorn1, mname') markTrailing :: (Monad m, Monoid w) => [TrailingAnn] -> EP w m [TrailingAnn] markTrailing ts = do @@ -4537,10 +4520,10 @@ instance (ExactPrint (Match GhcPs (LocatedA body))) debugM $ "LocatedL [LMatch" -- TODO: markAnnList? an0 <- markLensFun' an lal_rest markEpToken - an1 <- markLensMAA an0 lal_open + an1 <- markLensBracketsO an0 lal_brackets an2 <- markEpAnnAllLT an1 lal_semis a' <- markAnnotated a - an3 <- markLensMAA an2 lal_close + an3 <- markLensBracketsC an2 lal_brackets return (L an3 a') instance ExactPrint (LocatedLW [LocatedA (StmtLR GhcPs GhcPs (LocatedA (HsExpr GhcPs)))]) where @@ -4564,9 +4547,9 @@ instance ExactPrint (LocatedLW [LocatedA (StmtLR GhcPs GhcPs (LocatedA (HsCmd Gh setAnnotationAnchor = setAnchorAn exact (L ann es) = do debugM $ "LocatedL [CmdLStmt" - an0 <- markLensMAA ann lal_open + an0 <- markLensBracketsO ann lal_brackets es' <- mapM markAnnotated es - an1 <- markLensMAA an0 lal_close + an1 <- markLensBracketsC an0 lal_brackets return (L an1 es') instance ExactPrint (LocatedL [LocatedA (ConDeclField GhcPs)]) where diff --git a/utils/check-exact/Main.hs b/utils/check-exact/Main.hs index dc3721754916b5b31be362733744703cadefde8d..9fcb5d4380c6e59be3c0457a3df5b1a5afb9b43a 100644 --- a/utils/check-exact/Main.hs +++ b/utils/check-exact/Main.hs @@ -530,8 +530,8 @@ changeLocalDecls libdir (L l p) = do (os:oldSigs) = concatMap decl2Sig oldDecls' os' = setEntryDP os (DifferentLine 2 0) let sortKey = captureOrderBinds decls - let (EpAnn anc (AnnList (Just _) a b c dd e) cs) = van - let van' = (EpAnn anc (AnnList (Just (EpaDelta noSrcSpan (DifferentLine 1 5) [])) a b c dd e) cs) + let (EpAnn anc (AnnList (Just _) a b c dd) cs) = van + let van' = (EpAnn anc (AnnList (Just (EpaDelta noSrcSpan (DifferentLine 1 5) [])) a b c dd) cs) let binds' = (HsValBinds van' (ValBinds sortKey (decl':oldBinds) (sig':os':oldSigs))) @@ -558,7 +558,7 @@ changeLocalDecls2 libdir (L l p) = do let anc = (EpaDelta noSrcSpan (DifferentLine 1 3) []) let anc2 = (EpaDelta noSrcSpan (DifferentLine 1 5) []) let an = EpAnn anc - (AnnList (Just anc2) Nothing Nothing + (AnnList (Just anc2) ListNone [] (EpTok (EpaDelta noSrcSpan (SameLine 0) [])) []) @@ -885,8 +885,7 @@ addHiding1 _libdir (L l p) = do v2 = L ( noAnnSrcSpanDP0) (IEVar Nothing (L noAnnSrcSpanDP0 (IEName noExtField n2)) Nothing) impHiding = L (EpAnn d0 (AnnList Nothing - (Just (AddEpAnn AnnOpenP d1)) - (Just (AddEpAnn AnnCloseP d0)) + (ListParens (EpTok d1) (EpTok d0)) [] (EpTok d1,[]) []) @@ -911,8 +910,7 @@ addHiding2 _libdir top = do Just (_,L _lh ns) = ideclImportList imp1 lh' = (EpAnn d0 (AnnList Nothing - (Just (AddEpAnn AnnOpenP d1)) - (Just (AddEpAnn AnnCloseP d0)) + (ListParens (EpTok d1) (EpTok d0)) [] (EpTok d1, []) []) diff --git a/utils/check-exact/Transform.hs b/utils/check-exact/Transform.hs index eed3d29806f13cfad7db8601ef05d4079c05143c..63d36c447225535412bbef3dd6ef96595a68f88f 100644 --- a/utils/check-exact/Transform.hs +++ b/utils/check-exact/Transform.hs @@ -1088,7 +1088,7 @@ oldWhereAnnotation (EpAnn anc an cs) ww _oldSpan = an' -- TODO: when we set DP (0,0) for the HsValBinds EpEpaLocation, -- change the AnnList anchor to have the correct DP too where - (AnnList ancl o c s _r t) = an + (AnnList ancl p s _r t) = an w = case ww of WithWhere -> EpTok (EpaDelta noSrcSpan (SameLine 0) []) WithoutWhere -> NoEpTok @@ -1097,7 +1097,7 @@ oldWhereAnnotation (EpAnn anc an cs) ww _oldSpan = an' WithWhere -> (anc, ancl) WithoutWhere -> (anc, ancl) an' = EpAnn anc' - (AnnList ancl' o c s w t) + (AnnList ancl' p s w t) cs newWhereAnnotation :: WithWhere -> (EpAnn (AnnList (EpToken "where"))) @@ -1109,7 +1109,7 @@ newWhereAnnotation ww = an WithWhere -> EpTok (EpaDelta noSrcSpan (SameLine 0) []) WithoutWhere -> NoEpTok an = EpAnn anc - (AnnList (Just anc2) Nothing Nothing [] w []) + (AnnList (Just anc2) ListNone [] w []) emptyComments -- --------------------------------------------------------------------- diff --git a/utils/check-exact/Utils.hs b/utils/check-exact/Utils.hs index 0a20d7012b3789bc4cdef1fbef592ae9f6206b82..bd29f64913d846b23cc61249e1332356a215ea75 100644 --- a/utils/check-exact/Utils.hs +++ b/utils/check-exact/Utils.hs @@ -34,7 +34,6 @@ import GHC.Types.Name.Reader import GHC.Types.SrcLoc import GHC.Driver.Ppr import GHC.Data.FastString -import qualified GHC.Data.Strict as Strict import GHC.Base (NonEmpty(..)) import GHC.Parser.Lexer (allocateComments) @@ -140,13 +139,6 @@ undelta (l,_) (DifferentLine dl dc) (LayoutStartCol co) = (fl,fc) fl = l + dl fc = co + dc -undeltaSpan :: RealSrcSpan -> AnnKeywordId -> DeltaPos -> AddEpAnn -undeltaSpan anc kw dp = AddEpAnn kw (EpaSpan (RealSrcSpan sp Strict.Nothing)) - where - (l,c) = undelta (ss2pos anc) dp (LayoutStartCol 0) - len = length (keywordToString kw) - sp = range2rs ((l,c),(l,c+len)) - -- --------------------------------------------------------------------- adjustDeltaForOffset :: LayoutStartCol -> DeltaPos -> DeltaPos @@ -320,8 +312,8 @@ insertTopLevelCppComments (HsModule (XModulePs an lo mdeprec mbDoc) mmn mexports where hc1' = workInComments (comments an2) csh' an3' = an2 { comments = hc1' } - (csh', cs0b') = case al_open $ anns l of - Just (AddEpAnn _ (EpaSpan (RealSrcSpan s _))) ->(h, n) + (csh', cs0b') = case annListBracketsLocs $ al_brackets $ anns l of + (EpaSpan (RealSrcSpan s _),_) ->(h, n) where (h,n) = break (\(L ll _) -> (ss2pos $ anchor ll) > (ss2pos s) ) cs0b @@ -355,6 +347,14 @@ insertTopLevelCppComments (HsModule (XModulePs an lo mdeprec mbDoc) mmn mexports cs4' = workInComments cs4 these (xs',rest') = allocPreceding xs rest +annListBracketsLocs :: AnnListBrackets -> (EpaLocation,EpaLocation) +annListBracketsLocs (ListParens o c) = (getEpTokenLoc o, getEpTokenLoc c) +annListBracketsLocs (ListBraces o c) = (getEpTokenLoc o, getEpTokenLoc c) +annListBracketsLocs (ListSquare o c) = (getEpTokenLoc o, getEpTokenLoc c) +annListBracketsLocs (ListBanana o c) = (getEpUniTokenLoc o, getEpUniTokenLoc c) +annListBracketsLocs ListNone = (noAnn, noAnn) + + data SplitWhere = Before | After splitOnWhere :: SplitWhere -> EpToken "where" -> [LEpaComment] -> ([LEpaComment], [LEpaComment]) @@ -586,9 +586,6 @@ setTrailingAnnLoc (AddVbarAnn _) ss = (AddVbarAnn ss) setTrailingAnnLoc (AddDarrowAnn _) ss = (AddDarrowAnn ss) setTrailingAnnLoc (AddDarrowUAnn _) ss = (AddDarrowUAnn ss) -addEpAnnLoc :: AddEpAnn -> EpaLocation -addEpAnnLoc (AddEpAnn _ l) = l - -- --------------------------------------------------------------------- type DeclsByTag a = Map.Map DeclTag [(RealSrcSpan, a)] diff --git a/utils/haddock/haddock-api/src/Haddock/Types.hs b/utils/haddock/haddock-api/src/Haddock/Types.hs index a8a24a8ea69de30acc1a7d25379cb95cc89310c9..e15be9ceab4211c2a1dcbd197ca0dc172c787c2a 100644 --- a/utils/haddock/haddock-api/src/Haddock/Types.hs +++ b/utils/haddock/haddock-api/src/Haddock/Types.hs @@ -998,40 +998,31 @@ instance NFData (EpAnn NameAnn) where rnf (EpAnn en ann cs) = en `deepseq` ann `deepseq` cs `deepseq` () instance NFData NameAnn where - rnf (NameAnn a b c d e) = + rnf (NameAnn a b c) = a `deepseq` b `deepseq` c `deepseq` - d `deepseq` - e `deepseq` - () - rnf (NameAnnCommas a b c d e) = + () + rnf (NameAnnCommas a b c) = a `deepseq` b `deepseq` c `deepseq` - d `deepseq` - e `deepseq` - () - rnf (NameAnnBars a b c d e) = + () + rnf (NameAnnBars a b c) = a `deepseq` b `deepseq` c `deepseq` - d `deepseq` - e `deepseq` - () - rnf (NameAnnOnly a b c d) = + () + rnf (NameAnnOnly a b) = a `deepseq` b `deepseq` - c `deepseq` - d `deepseq` - () - rnf (NameAnnRArrow a b c d e) = + () + rnf (NameAnnRArrow a b c d) = a `deepseq` b `deepseq` c `deepseq` d `deepseq` - e `deepseq` - () + () rnf (NameAnnQuote a b c) = a `deepseq` b `deepseq` @@ -1047,10 +1038,11 @@ instance NFData TrailingAnn where rnf (AddDarrowUAnn epaL) = rnf epaL instance NFData NameAdornment where - rnf NameParens = () - rnf NameParensHash = () - rnf NameBackquotes = () - rnf NameSquare = () + rnf (NameParens o c) = o `deepseq` c `seq` () + rnf (NameParensHash o c) = o `deepseq` c `seq` () + rnf (NameBackquotes o c) = o `deepseq` c `seq` () + rnf (NameSquare o c) = o `deepseq` c `seq` () + rnf NameNoAdornment = () instance NFData NoComments where rnf NoComments = () @@ -1085,3 +1077,15 @@ instance NFData BufPos where instance NFData DeltaPos where rnf (SameLine n) = rnf n rnf (DifferentLine n m) = n `deepseq` m `deepseq` () + +instance NFData (EpToken tok) where + rnf (EpTok l) = rnf l + rnf NoEpTok = () + +instance NFData (EpUniToken tok toku) where + rnf (EpUniTok l s) = l `deepseq` s `deepseq` () + rnf NoEpUniTok = () + +instance NFData IsUnicodeSyntax where + rnf NormalSyntax = () + rnf UnicodeSyntax = ()