ghc-exactprint 0.5.4.0 → 0.5.5.0
raw patch · 7 files changed
+81/−33 lines, 7 filesdep ~ghc-exactprintPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: ghc-exactprint
API changes (from Hackage documentation)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecField name (HsExpr.LHsExpr name))
- Language.Haskell.GHC.ExactPrint.Annotater: instance (Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecField name (HsPat.LPat name))
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ConDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.FamilyDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.FamilyResultSig name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamDefltEqn name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamInstEqn name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Outputable.OutputableBndr name, OccName.HasOccName name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.Pat name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate body) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.Stmt name (SrcLoc.Located body))
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.HsBind name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.HsLocalBinds name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.IPBind name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.Sig name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.AnnDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ClsInstDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DataFamInstDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DefaultDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DerivDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ForeignDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.HsDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.InstDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleBndr name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleDecls name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.SpliceDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyClDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamInstDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.VectDecl name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsCmd name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsCmdTop name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsExpr name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsSplice name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsTupArg name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.ParStmtBlock name name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecUpdField name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.ConDeclField name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsAppType name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsTyVarBndr name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsType name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (Language.Haskell.GHC.ExactPrint.Annotater.ResTyGADTHook name)
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsExpr.ExprLStmt name]
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LConDeclField name]
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LHsSigType name]
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LHsType name]
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [SrcLoc.Located (HsExpr.StmtLR name name (HsExpr.LHsCmd name))]
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate body) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.GRHS name (SrcLoc.Located body))
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate body) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.Match name (SrcLoc.Located body))
- Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, Outputable.OutputableBndr name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate body) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [SrcLoc.Located (HsExpr.Match name (SrcLoc.Located body))]
- Language.Haskell.GHC.ExactPrint.Annotater: instance Outputable.OutputableBndr name => Outputable.Outputable (Language.Haskell.GHC.ExactPrint.Annotater.ResTyGADTHook name)
- Language.Haskell.GHC.ExactPrint.GhcInterim: commentToAnnotation :: Located Token -> Located AnnotationComment
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markAnnOpen :: SourceText -> String -> Annotated ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markExternalSourceText :: SrcSpan -> SourceText -> String -> Annotated ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markSourceText :: SourceText -> String -> Annotated ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: sourceTextToString :: SourceText -> String -> String
+ Language.Haskell.GHC.ExactPrint.Annotater: instance (PlaceHolder.DataId name, OccName.HasOccName name, Language.Haskell.GHC.ExactPrint.Annotater.Annotate name) => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsImpExp.IEWrappedName name)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.HsBind RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.HsLocalBinds RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.IPBind RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsBinds.Sig RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.AnnDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ClsInstDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ConDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DataFamInstDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DefaultDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.DerivDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.FamilyDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.FamilyResultSig RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.ForeignDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.HsDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.HsDerivingClause RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.InstDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleBndr RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.RuleDecls RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.SpliceDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyClDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamDefltEqn RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamInstDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.TyFamInstEqn RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsDecls.VectDecl RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsCmd RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsCmdTop RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsExpr RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsSplice RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.HsTupArg RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.ParStmtBlock RdrName.RdrName RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecField RdrName.RdrName (HsExpr.LHsExpr RdrName.RdrName))
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecField RdrName.RdrName (HsPat.LPat RdrName.RdrName))
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.HsRecUpdField RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsPat.Pat RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.ConDeclField RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsAppType RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsTyVarBndr RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsTypes.HsType RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate (Language.Haskell.GHC.ExactPrint.Annotater.ResTyGADTHook RdrName.RdrName)
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate BasicTypes.DerivStrategy
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsDecls.LHsDerivingClause RdrName.RdrName]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsExpr.ExprLStmt RdrName.RdrName]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LConDeclField RdrName.RdrName]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LHsSigType RdrName.RdrName]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [HsTypes.LHsType RdrName.RdrName]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate [SrcLoc.Located (HsExpr.StmtLR RdrName.RdrName RdrName.RdrName (HsExpr.LHsCmd RdrName.RdrName))]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate body => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.GRHS RdrName.RdrName (SrcLoc.Located body))
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate body => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.Match RdrName.RdrName (SrcLoc.Located body))
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate body => Language.Haskell.GHC.ExactPrint.Annotater.Annotate (HsExpr.Stmt RdrName.RdrName (SrcLoc.Located body))
+ Language.Haskell.GHC.ExactPrint.Annotater: instance Language.Haskell.GHC.ExactPrint.Annotater.Annotate body => Language.Haskell.GHC.ExactPrint.Annotater.Annotate [SrcLoc.Located (HsExpr.Match RdrName.RdrName (SrcLoc.Located body))]
+ Language.Haskell.GHC.ExactPrint.Annotater: instance PlaceHolder.OutputableBndrId name => Outputable.Outputable (Language.Haskell.GHC.ExactPrint.Annotater.ResTyGADTHook name)
+ Language.Haskell.GHC.ExactPrint.Transform: instance Control.Monad.Trans.Class.MonadTrans Language.Haskell.GHC.ExactPrint.Transform.TransformT
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: annotationsToComments :: forall m_a14RT. MonadFree AnnotationF m_a14RT => [AnnKeywordId] -> m_a14RT ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: annotationsToComments :: forall m_aGag. MonadFree AnnotationF m_aGag => [AnnKeywordId] -> m_aGag ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: countAnns :: forall m_a14PX. MonadFree AnnotationF m_a14PX => AnnKeywordId -> m_a14PX Int
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: countAnns :: forall m_aG8e. MonadFree AnnotationF m_aG8e => AnnKeywordId -> m_aG8e Int
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: getSrcSpanForKw :: forall m_a14Re. MonadFree AnnotationF m_a14Re => SrcSpan -> AnnKeywordId -> m_a14Re SrcSpan
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: getSrcSpanForKw :: forall m_aG9z. MonadFree AnnotationF m_aG9z => SrcSpan -> AnnKeywordId -> m_aG9z SrcSpan
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: ifInContext :: forall m_a14Uq. MonadFree AnnotationF m_a14Uq => Set AstContext -> Annotated () -> Annotated () -> m_a14Uq ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: ifInContext :: forall m_aGcV. MonadFree AnnotationF m_aGcV => Set AstContext -> Annotated () -> Annotated () -> m_aGcV ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markAnnBeforeAnn :: forall m_a14Wm. MonadFree AnnotationF m_a14Wm => AnnKeywordId -> AnnKeywordId -> m_a14Wm ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markAnnBeforeAnn :: forall m_aGeX. MonadFree AnnotationF m_aGeX => AnnKeywordId -> AnnKeywordId -> m_aGeX ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markEOF :: forall m_a14dB. MonadFree AnnotationF m_a14dB => m_a14dB ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markEOF :: forall m_aFkQ. MonadFree AnnotationF m_aFkQ => m_aFkQ ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markExternal :: forall m_a14MG. MonadFree AnnotationF m_a14MG => SrcSpan -> AnnKeywordId -> String -> m_a14MG ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markExternal :: forall m_aG4N. MonadFree AnnotationF m_aG4N => SrcSpan -> AnnKeywordId -> String -> m_aG4N ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInside :: forall m_a14M5. MonadFree AnnotationF m_a14M5 => AnnKeywordId -> m_a14M5 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInside :: forall m_aG4a. MonadFree AnnotationF m_aG4a => AnnKeywordId -> m_aG4a ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markMany :: forall m_a14Nn. MonadFree AnnotationF m_a14Nn => AnnKeywordId -> m_a14Nn ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markMany :: forall m_aG5w. MonadFree AnnotationF m_aG5w => AnnKeywordId -> m_aG5w ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markManyOptional :: forall m_a14NY. MonadFree AnnotationF m_a14NY => AnnKeywordId -> m_a14NY ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markManyOptional :: forall m_aG69. MonadFree AnnotationF m_aG69 => AnnKeywordId -> m_aG69 ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrim :: forall m_a14Oz. MonadFree AnnotationF m_a14Oz => AnnKeywordId -> Int -> Maybe String -> m_a14Oz ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrim :: forall m_aG6M. MonadFree AnnotationF m_aG6M => AnnKeywordId -> Int -> Maybe String -> m_aG6M ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrimOptional :: forall m_a14Pg. MonadFree AnnotationF m_a14Pg => AnnKeywordId -> Int -> Maybe String -> m_a14Pg ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrimOptional :: forall m_aG7v. MonadFree AnnotationF m_aG7v => AnnKeywordId -> Int -> Maybe String -> m_aG7v ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOutside :: forall m_a14Lr. MonadFree AnnotationF m_a14Lr => AnnKeywordId -> KeywordId -> m_a14Lr ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOutside :: forall m_aG3u. MonadFree AnnotationF m_aG3u => AnnKeywordId -> KeywordId -> m_aG3u ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPPOptional :: forall m_a14KN. MonadFree AnnotationF m_a14KN => AnnKeywordId -> Maybe String -> m_a14KN ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPPOptional :: forall m_aG2O. MonadFree AnnotationF m_aG2O => AnnKeywordId -> Maybe String -> m_aG2O ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPrim :: forall m_a14K9. MonadFree AnnotationF m_a14K9 => AnnKeywordId -> Maybe String -> m_a14K9 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPrim :: forall m_aG28. MonadFree AnnotationF m_aG28 => AnnKeywordId -> Maybe String -> m_aG28 ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: setContextLevel :: forall m_a14T5. MonadFree AnnotationF m_a14T5 => Set AstContext -> Int -> Annotated () -> m_a14T5 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: setContextLevel :: forall m_aGbw. MonadFree AnnotationF m_aGbw => Set AstContext -> Int -> Annotated () -> m_aGbw ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: storeOriginalSrcSpan :: forall m_a14Qz. MonadFree AnnotationF m_a14Qz => SrcSpan -> AnnKey -> m_a14Qz AnnKey
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: storeOriginalSrcSpan :: forall m_aG8S. MonadFree AnnotationF m_aG8S => SrcSpan -> AnnKey -> m_aG8S AnnKey
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: tellContext :: forall m_a14VL. MonadFree AnnotationF m_a14VL => Set AstContext -> m_a14VL ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: tellContext :: forall m_aGek. MonadFree AnnotationF m_aGek => Set AstContext -> m_aGek ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: unsetContext :: forall m_a14TM. MonadFree AnnotationF m_a14TM => AstContext -> Annotated () -> m_a14TM ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: unsetContext :: forall m_aGcf. MonadFree AnnotationF m_aGcf => AstContext -> Annotated () -> m_aGcf ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKey :: forall m_a14Su. MonadFree AnnotationF m_a14Su => [(SrcSpan, Annotated ())] -> m_a14Su ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKey :: forall m_aGaT. MonadFree AnnotationF m_aGaT => [(SrcSpan, Annotated ())] -> m_aGaT ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKeyContexts :: forall m_a14V7. MonadFree AnnotationF m_a14V7 => ListContexts -> [(SrcSpan, Annotated ())] -> m_a14V7 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKeyContexts :: forall m_aGdE. MonadFree AnnotationF m_aGdE => ListContexts -> [(SrcSpan, Annotated ())] -> m_aGdE ()
- Language.Haskell.GHC.ExactPrint.Transform: addSimpleAnnT :: (Data a) => Located a -> DeltaPos -> [(KeywordId, DeltaPos)] -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: addSimpleAnnT :: (Data a, Monad m) => Located a -> DeltaPos -> [(KeywordId, DeltaPos)] -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: addTrailingCommaT :: (Data a) => Located a -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: addTrailingCommaT :: (Data a, Monad m) => Located a -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: balanceComments :: (Data a, Data b) => Located a -> Located b -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: balanceComments :: (Data a, Data b, Monad m) => Located a -> Located b -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: cloneT :: (Data a) => a -> Transform (a, [(SrcSpan, SrcSpan)])
+ Language.Haskell.GHC.ExactPrint.Transform: cloneT :: (Data a, Monad m) => a -> TransformT m (a, [(SrcSpan, SrcSpan)])
- Language.Haskell.GHC.ExactPrint.Transform: getEntryDPT :: (Data a) => Located a -> Transform DeltaPos
+ Language.Haskell.GHC.ExactPrint.Transform: getEntryDPT :: (Data a, Monad m) => Located a -> TransformT m DeltaPos
- Language.Haskell.GHC.ExactPrint.Transform: graftT :: (Data a) => Anns -> a -> Transform a
+ Language.Haskell.GHC.ExactPrint.Transform: graftT :: (Data a, Monad m) => Anns -> a -> TransformT m a
- Language.Haskell.GHC.ExactPrint.Transform: hsDecls :: (HasDecls t, Monad m) => t -> TransformT m [LHsDecl RdrName]
+ Language.Haskell.GHC.ExactPrint.Transform: hsDecls :: (HasDecls t, (Monad m)) => t -> TransformT m [LHsDecl RdrName]
- Language.Haskell.GHC.ExactPrint.Transform: hsDeclsGeneric :: (Data t) => t -> Transform [LHsDecl RdrName]
+ Language.Haskell.GHC.ExactPrint.Transform: hsDeclsGeneric :: (Data t, Monad m) => t -> TransformT m [LHsDecl RdrName]
- Language.Haskell.GHC.ExactPrint.Transform: removeTrailingCommaT :: (Data a) => Located a -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: removeTrailingCommaT :: (Data a, Monad m) => Located a -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: replaceDecls :: (HasDecls t, Monad m) => t -> [LHsDecl RdrName] -> TransformT m t
+ Language.Haskell.GHC.ExactPrint.Transform: replaceDecls :: (HasDecls t, (Monad m)) => t -> [LHsDecl RdrName] -> TransformT m t
- Language.Haskell.GHC.ExactPrint.Transform: setEntryDPT :: (Data a) => Located a -> DeltaPos -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: setEntryDPT :: (Data a, Monad m) => Located a -> DeltaPos -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: setPrecedingLinesDeclT :: LHsDecl RdrName -> Int -> Int -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: setPrecedingLinesDeclT :: (Monad m) => LHsDecl RdrName -> Int -> Int -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: setPrecedingLinesT :: (Data a) => Located a -> Int -> Int -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: setPrecedingLinesT :: (Data a, Monad m) => Located a -> Int -> Int -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: transferEntryDPT :: (Data a, Data b) => Located a -> Located b -> Transform ()
+ Language.Haskell.GHC.ExactPrint.Transform: transferEntryDPT :: (Data a, Data b, Monad m) => Located a -> Located b -> TransformT m ()
- Language.Haskell.GHC.ExactPrint.Transform: uniqueSrcSpanT :: Transform SrcSpan
+ Language.Haskell.GHC.ExactPrint.Transform: uniqueSrcSpanT :: (Monad m) => TransformT m SrcSpan
Files
- ChangeLog +2/−0
- ghc-exactprint.cabal +2/−2
- src-ghc82/Language/Haskell/GHC/ExactPrint/Annotater.hs +7/−5
- src/Language/Haskell/GHC/ExactPrint/Transform.hs +24/−24
- tests/Test.hs +2/−2
- tests/examples/transform/Brittany1.hs +22/−0
- tests/examples/transform/Brittany1.hs.expected +22/−0
ChangeLog view
@@ -1,3 +1,5 @@+2017-07-23 v0.5.5.0+ * Support GHC 8.2.1 2017-05-17 v0.5.4.0 * Support GHC 8.2 (rc2) 2017-05-05 v0.5.3.1
ghc-exactprint.cabal view
@@ -1,5 +1,5 @@ name: ghc-exactprint-version: 0.5.4.0+version: 0.5.5.0 synopsis: ExactPrint for GHC description: Using the API Annotations available from GHC 7.10.2, this library provides a means to round trip any code that can@@ -146,7 +146,7 @@ if flag (dev) build-depends: free else- build-depends: ghc-exactprint >= 0.5.3+ build-depends: ghc-exactprint >= 0.5.4 if impl (ghc >= 7.11) build-depends: ghc-boot
src-ghc82/Language/Haskell/GHC/ExactPrint/Annotater.hs view
@@ -979,8 +979,8 @@ markAST _ (GHC.Match mln pats _typ (GHC.GRHSs grhs (GHC.L _ lb))) = do let- get_infix (GHC.FunRhs _ f) = f- get_infix _ = GHC.Prefix+ get_infix (GHC.FunRhs _ f _) = f+ get_infix _ = GHC.Prefix isFunBind GHC.FunRhs{} = True isFunBind _ = False@@ -991,7 +991,7 @@ else mark GHC.AnnOpenP markLocated a case mln of- GHC.FunRhs n _ -> setContext (Set.singleton InfixOp) $ markLocated n+ GHC.FunRhs n _ _ -> setContext (Set.singleton InfixOp) $ markLocated n _ -> return () markLocated b if null xs@@ -1002,8 +1002,10 @@ annotationsToComments [GHC.AnnOpenP,GHC.AnnCloseP] inContext (Set.fromList [LambdaExpr]) $ do mark GHC.AnnLam -- For HsLam case mln of- GHC.FunRhs n _ -> do- setContext (Set.fromList [NoPrecedingSpace,PrefixOp]) $ markLocated n+ GHC.FunRhs n _ s -> do+ setContext (Set.fromList [NoPrecedingSpace,PrefixOp]) $ do+ when (s == GHC.SrcStrict) $ mark GHC.AnnBang+ markLocated n mapM_ markLocated pats _ -> markListNoPrecedingSpace False pats
src/Language/Haskell/GHC/ExactPrint/Transform.hs view
@@ -127,7 +127,7 @@ ,MonadReader () ,MonadWriter [String] ,MonadState (Anns,Int)- -- ,MonadTrans+ ,MonadTrans ) @@ -179,7 +179,7 @@ -- |Once we have 'Anns', a 'GHC.SrcSpan' is used purely as part of an 'AnnKey' -- to index into the 'Anns'. If we need to add new elements to the AST, they -- need their own 'GHC.SrcSpan' for this.-uniqueSrcSpanT :: Transform GHC.SrcSpan+uniqueSrcSpanT :: (Monad m) => TransformT m GHC.SrcSpan uniqueSrcSpanT = do (an,col) <- get put (an,col + 1 )@@ -193,12 +193,12 @@ -- --------------------------------------------------------------------- -- |Make a copy of an AST element, replacing the existing SrcSpans with new -- ones, and duplicating the matching annotations.-cloneT :: (Data a) => a -> Transform (a, [(GHC.SrcSpan, GHC.SrcSpan)])+cloneT :: (Data a,Monad m) => a -> TransformT m (a, [(GHC.SrcSpan, GHC.SrcSpan)]) cloneT ast = do runWriterT $ SYB.everywhereM (return `SYB.ext2M` replaceLocated) ast where- replaceLocated :: forall loc a. (Typeable loc,Data a)- => (GHC.GenLocated loc a) -> WriterT [(GHC.SrcSpan, GHC.SrcSpan)] Transform (GHC.GenLocated loc a)+ replaceLocated :: forall loc a m. (Typeable loc,Data a,Monad m)+ => (GHC.GenLocated loc a) -> WriterT [(GHC.SrcSpan, GHC.SrcSpan)] (TransformT m) (GHC.GenLocated loc a) replaceLocated (GHC.L l t) = do case cast l :: Maybe GHC.SrcSpan of Just ss -> do@@ -212,11 +212,11 @@ -- --------------------------------------------------------------------- -- |Slightly more general form of cloneT-graftT :: (Data a) => Anns -> a -> Transform a+graftT :: (Data a,Monad m) => Anns -> a -> TransformT m a graftT origAnns = SYB.everywhereM (return `SYB.ext2M` replaceLocated) where- replaceLocated :: forall loc a. (Typeable loc, Data a)- => GHC.GenLocated loc a -> Transform (GHC.GenLocated loc a)+ replaceLocated :: forall loc a m. (Typeable loc, Data a, Monad m)+ => GHC.GenLocated loc a -> TransformT m (GHC.GenLocated loc a) replaceLocated (GHC.L l t) = do case cast l :: Maybe GHC.SrcSpan of Just ss -> do@@ -276,7 +276,7 @@ -- |Create a simple 'Annotation' without comments, and attach it to the first -- parameter.-addSimpleAnnT :: (Data a) => GHC.Located a -> DeltaPos -> [(KeywordId, DeltaPos)] -> Transform ()+addSimpleAnnT :: (Data a,Monad m) => GHC.Located a -> DeltaPos -> [(KeywordId, DeltaPos)] -> TransformT m () addSimpleAnnT ast dp kds = do let ann = annNone { annEntryDelta = dp , annsDP = kds@@ -286,21 +286,21 @@ -- --------------------------------------------------------------------- -- |Add a trailing comma annotation, unless there is already one-addTrailingCommaT :: (Data a) => GHC.Located a -> Transform ()+addTrailingCommaT :: (Data a,Monad m) => GHC.Located a -> TransformT m () addTrailingCommaT ast = do modifyAnnsT (addTrailingComma ast (DP (0,0))) -- --------------------------------------------------------------------- -- |Remove a trailing comma annotation, if there is one one-removeTrailingCommaT :: (Data a) => GHC.Located a -> Transform ()+removeTrailingCommaT :: (Data a,Monad m) => GHC.Located a -> TransformT m () removeTrailingCommaT ast = do modifyAnnsT (removeTrailingComma ast) -- --------------------------------------------------------------------- -- |'Transform' monad version of 'getEntryDP'-getEntryDPT :: (Data a) => GHC.Located a -> Transform DeltaPos+getEntryDPT :: (Data a,Monad m) => GHC.Located a -> TransformT m DeltaPos getEntryDPT ast = do anns <- getAnnsT return (getEntryDP anns ast)@@ -308,28 +308,28 @@ -- --------------------------------------------------------------------- -- |'Transform' monad version of 'getEntryDP'-setEntryDPT :: (Data a) => GHC.Located a -> DeltaPos -> Transform ()+setEntryDPT :: (Data a,Monad m) => GHC.Located a -> DeltaPos -> TransformT m () setEntryDPT ast dp = do modifyAnnsT (setEntryDP ast dp) -- --------------------------------------------------------------------- -- |'Transform' monad version of 'transferEntryDP'-transferEntryDPT :: (Data a,Data b) => GHC.Located a -> GHC.Located b -> Transform ()+transferEntryDPT :: (Data a,Data b,Monad m) => GHC.Located a -> GHC.Located b -> TransformT m () transferEntryDPT a b = modifyAnnsT (transferEntryDP a b) -- --------------------------------------------------------------------- -- |'Transform' monad version of 'setPrecedingLinesDecl'-setPrecedingLinesDeclT :: GHC.LHsDecl GHC.RdrName -> Int -> Int -> Transform ()+setPrecedingLinesDeclT :: (Monad m) => GHC.LHsDecl GHC.RdrName -> Int -> Int -> TransformT m () setPrecedingLinesDeclT ld n c = modifyAnnsT (setPrecedingLinesDecl ld n c) -- --------------------------------------------------------------------- -- |'Transform' monad version of 'setPrecedingLines'-setPrecedingLinesT :: (SYB.Data a) => GHC.Located a -> Int -> Int -> Transform ()+setPrecedingLinesT :: (SYB.Data a,Monad m) => GHC.Located a -> Int -> Int -> TransformT m () setPrecedingLinesT ld n c = modifyAnnsT (setPrecedingLines ld n c) @@ -452,7 +452,7 @@ -- from the second one to the 'annFollowingComments' of the first if they belong -- to it instead. This is typically required before deleting or duplicating -- either of the AST elements.-balanceComments :: (Data a,Data b) => GHC.Located a -> GHC.Located b -> Transform ()+balanceComments :: (Data a,Data b,Monad m) => GHC.Located a -> GHC.Located b -> TransformT m () balanceComments first second = do -- ++AZ++ : replace the nested casts with appropriate SYB.gmapM -- logTr $ "balanceComments entered"@@ -469,7 +469,7 @@ -- it are attached to it, and not the following element. Of necessity this is a -- heuristic process, to be tuned later. Possibly a variant should be provided -- with a passed-in decision function.-balanceComments' :: (Data a,Data b) => GHC.Located a -> GHC.Located b -> Transform ()+balanceComments' :: (Data a,Data b,Monad m) => GHC.Located a -> GHC.Located b -> TransformT m () balanceComments' first second = do let k1 = mkAnnKey first@@ -492,7 +492,7 @@ -- |Once 'balanceComments' has been called to move trailing comments to a -- 'GHC.FunBind', these need to be pushed down from the top level to the last -- 'GHC.Match' if that 'GHC.Match' needs to be manipulated.-balanceCommentsFB :: (Data b) => GHC.LHsBind GHC.RdrName -> GHC.Located b -> Transform ()+balanceCommentsFB :: (Data b,Monad m) => GHC.LHsBind GHC.RdrName -> GHC.Located b -> TransformT m () #if __GLASGOW_HASKELL__ <= 710 balanceCommentsFB (GHC.L _ (GHC.FunBind _ _ (GHC.MG matches _ _ _) _ _ _)) second = do #else@@ -894,7 +894,7 @@ -- the general case and one specific for a 'GHC.LHsBind'. This is required -- because a 'GHC.FunBind' may have multiple 'GHC.Match' items, so we cannot -- gurantee that 'replaceDecls' after 'hsDecls' is idempotent.-hasDeclsSybTransform :: (SYB.Data t2, Monad m)+hasDeclsSybTransform :: (SYB.Data t2,Monad m) => (forall t. HasDecls t => t -> m t) -- ^Worker function for the general case -> (GHC.LHsBind GHC.RdrName -> m (GHC.LHsBind GHC.RdrName))@@ -938,7 +938,7 @@ -- return anything for these as there is not meaningful 'replaceDecls' for it. -- This function provides a version of 'hsDecls' that returns the 'GHC.FunBind' -- decls too, where they are needed for analysis only.-hsDeclsGeneric :: (SYB.Data t) => t -> Transform [GHC.LHsDecl GHC.RdrName]+hsDeclsGeneric :: (SYB.Data t,Monad m) => t -> TransformT m [GHC.LHsDecl GHC.RdrName] hsDeclsGeneric t = q t where q = return []@@ -961,7 +961,7 @@ -- --------------------------------- - lhsbind :: GHC.LHsBind GHC.RdrName -> Transform [GHC.LHsDecl GHC.RdrName]+ lhsbind :: (Monad m) => GHC.LHsBind GHC.RdrName -> TransformT m [GHC.LHsDecl GHC.RdrName] #if __GLASGOW_HASKELL__ <= 710 lhsbind (GHC.L _ (GHC.FunBind _ _ (GHC.MG matches _ _ _) _ _ _)) = do #else@@ -980,12 +980,12 @@ -- --------------------------------- - llocalbinds :: GHC.Located (GHC.HsLocalBinds GHC.RdrName) -> Transform [GHC.LHsDecl GHC.RdrName]+ llocalbinds :: (Monad m) => GHC.Located (GHC.HsLocalBinds GHC.RdrName) -> TransformT m [GHC.LHsDecl GHC.RdrName] llocalbinds (GHC.L _ ds) = localbinds ds -- --------------------------------- - localbinds :: GHC.HsLocalBinds GHC.RdrName -> Transform [GHC.LHsDecl GHC.RdrName]+ localbinds :: (Monad m) => GHC.HsLocalBinds GHC.RdrName -> TransformT m [GHC.LHsDecl GHC.RdrName] localbinds d = hsDeclsValBinds d -- ---------------------------------------------------------------------
tests/Test.hs view
@@ -183,13 +183,13 @@ tt' :: IO (Counts,Int) tt' = runTestText (putTextToHandle stdout True) $ TestList [ - mkPrettyRoundtrip "ghc80" "Zwaluw.hs"+ -- mkPrettyRoundtrip "ghc80" "Zwaluw.hs" -- mkPrettyRoundtrip "ghc80" "pmc007.hs" -- mkPrettyRoundtrip "ghc80" "MultiQuote.hs" -- mkPrettyRoundtrip "ghc80" "T10689a.hs" -- mkPrettyRoundtrip "ghc710" "Ann01.hs" - , mkParserTest "ghc80" "Zwaluw.hs"+ mkParserTest "ghc82" "T13594.hs" -- mkParserTest "ghc80" "SemicolonIf.hs" -- mkParserTest "ghc80" "T10689a.hs" -- mkParserTest "ghc80" "MonadT.hs"
+ tests/examples/transform/Brittany1.hs view
@@ -0,0 +1,22 @@++-- From https://github.com/alanz/ghc-exactprint/issues/53#issuecomment-306839162++blah = func+ where+-- status standard previous+-- quo layouting /associated+-- rule only ast item+ func =+ -- mercury (1, 1) (1,1) (1,1)+ [+ -- venus (1, 7) (1, 7) (1, 7) or (1, 2) if connected to "foo x"+ foo x+ -- earth (1, 8) (1, 8) (1, 3)+ | y <- z+ -- pluto (1, -2) (1, 6) (1, -2)+ -- saturn (1, -3) (1, 5) (1, -3)+ , x <- y+ -- jupiter (1, 2) (1, 10) (1, 1)+ , pred x+ -- nepturn (1, 1) (1, 1) (1, -10)+ ]
+ tests/examples/transform/Brittany1.hs.expected view
@@ -0,0 +1,22 @@++-- From https://github.com/alanz/ghc-exactprint/issues/53#issuecomment-306839162++blah = func+ where+-- status standard previous+-- quo layouting /associated+-- rule only ast item+ func =+ -- mercury (1, 1) (1,1) (1,1)+ [+ -- venus (1, 7) (1, 7) (1, 7) or (1, 2) if connected to "foo x"+ foo x+ -- earth (1, 8) (1, 8) (1, 3)+ | y <- z+ -- pluto (1, -2) (1, 6) (1, -2)+ -- saturn (1, -3) (1, 5) (1, -3)+ , x <- y+ -- jupiter (1, 2) (1, 10) (1, 1)+ , pred x+ -- nepturn (1, 1) (1, 1) (1, -10)+ ]