ghc-exactprint 0.6.3.3 → 0.6.3.4
raw patch · 4 files changed
+37/−3 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: annotationsToComments :: forall m_axGQ. MonadFree AnnotationF m_axGQ => [AnnKeywordId] -> m_axGQ ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: annotationsToComments :: forall m_axHP. MonadFree AnnotationF m_axHP => [AnnKeywordId] -> m_axHP ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: countAnns :: forall m_axDy. MonadFree AnnotationF m_axDy => AnnKeywordId -> m_axDy Int
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: countAnns :: forall m_axEx. MonadFree AnnotationF m_axEx => AnnKeywordId -> m_axEx Int
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: getSrcSpanForKw :: forall m_axFJ. MonadFree AnnotationF m_axFJ => SrcSpan -> AnnKeywordId -> m_axFJ SrcSpan
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: getSrcSpanForKw :: forall m_axGI. MonadFree AnnotationF m_axGI => SrcSpan -> AnnKeywordId -> m_axGI SrcSpan
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: ifInContext :: forall m_axLb. MonadFree AnnotationF m_axLb => Set AstContext -> Annotated () -> Annotated () -> m_axLb ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: ifInContext :: forall m_axMa. MonadFree AnnotationF m_axMa => Set AstContext -> Annotated () -> Annotated () -> m_axMa ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markAnnBeforeAnn :: forall m_axOt. MonadFree AnnotationF m_axOt => AnnKeywordId -> AnnKeywordId -> m_axOt ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markAnnBeforeAnn :: forall m_axPs. MonadFree AnnotationF m_axPs => AnnKeywordId -> AnnKeywordId -> m_axPs ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markEOF :: forall m_ax9n. MonadFree AnnotationF m_ax9n => m_ax9n ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markEOF :: forall m_axam. MonadFree AnnotationF m_axam => m_axam ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markExternal :: forall m_axy1. MonadFree AnnotationF m_axy1 => SrcSpan -> AnnKeywordId -> String -> m_axy1 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markExternal :: forall m_axz0. MonadFree AnnotationF m_axz0 => SrcSpan -> AnnKeywordId -> String -> m_axz0 ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInside :: forall m_axwY. MonadFree AnnotationF m_axwY => AnnKeywordId -> m_axwY ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInside :: forall m_axxX. MonadFree AnnotationF m_axxX => AnnKeywordId -> m_axxX ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInstead :: forall m_axuM. MonadFree AnnotationF m_axuM => AnnKeywordId -> KeywordId -> m_axuM ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markInstead :: forall m_axvL. MonadFree AnnotationF m_axvL => AnnKeywordId -> KeywordId -> m_axvL ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markMany :: forall m_axza. MonadFree AnnotationF m_axza => AnnKeywordId -> m_axza ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markMany :: forall m_axA9. MonadFree AnnotationF m_axA9 => AnnKeywordId -> m_axA9 ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markManyOptional :: forall m_axAd. MonadFree AnnotationF m_axAd => AnnKeywordId -> m_axAd ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markManyOptional :: forall m_axBc. MonadFree AnnotationF m_axBc => AnnKeywordId -> m_axBc ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrim :: forall m_axBg. MonadFree AnnotationF m_axBg => AnnKeywordId -> Int -> Maybe String -> m_axBg ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrim :: forall m_axCf. MonadFree AnnotationF m_axCf => AnnKeywordId -> Int -> Maybe String -> m_axCf ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrimOptional :: forall m_axCp. MonadFree AnnotationF m_axCp => AnnKeywordId -> Int -> Maybe String -> m_axCp ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOffsetPrimOptional :: forall m_axDo. MonadFree AnnotationF m_axDo => AnnKeywordId -> Int -> Maybe String -> m_axDo ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOutside :: forall m_axvS. MonadFree AnnotationF m_axvS => AnnKeywordId -> KeywordId -> m_axvS ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markOutside :: forall m_axwR. MonadFree AnnotationF m_axwR => AnnKeywordId -> KeywordId -> m_axwR ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPPOptional :: forall m_axtG. MonadFree AnnotationF m_axtG => AnnKeywordId -> Maybe String -> m_axtG ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPPOptional :: forall m_axuF. MonadFree AnnotationF m_axuF => AnnKeywordId -> Maybe String -> m_axuF ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPrim :: forall m_axsA. MonadFree AnnotationF m_axsA => AnnKeywordId -> Maybe String -> m_axsA ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: markPrim :: forall m_axtz. MonadFree AnnotationF m_axtz => AnnKeywordId -> Maybe String -> m_axtz ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: setContextLevel :: forall m_axIW. MonadFree AnnotationF m_axIW => Set AstContext -> Int -> Annotated () -> m_axIW ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: setContextLevel :: forall m_axJV. MonadFree AnnotationF m_axJV => Set AstContext -> Int -> Annotated () -> m_axJV ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: storeOriginalSrcSpan :: forall m_axEC. MonadFree AnnotationF m_axEC => SrcSpan -> AnnKey -> m_axEC AnnKey
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: storeOriginalSrcSpan :: forall m_axFB. MonadFree AnnotationF m_axFB => SrcSpan -> AnnKey -> m_axFB AnnKey
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: tellContext :: forall m_axNq. MonadFree AnnotationF m_axNq => Set AstContext -> m_axNq ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: tellContext :: forall m_axOp. MonadFree AnnotationF m_axOp => Set AstContext -> m_axOp ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: unsetContext :: forall m_axK5. MonadFree AnnotationF m_axK5 => AstContext -> Annotated () -> m_axK5 ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: unsetContext :: forall m_axL4. MonadFree AnnotationF m_axL4 => AstContext -> Annotated () -> m_axL4 ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKey :: forall m_axHT. MonadFree AnnotationF m_axHT => [(SrcSpan, Annotated ())] -> m_axHT ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKey :: forall m_axIS. MonadFree AnnotationF m_axIS => [(SrcSpan, Annotated ())] -> m_axIS ()
- Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKeyContexts :: forall m_axMk. MonadFree AnnotationF m_axMk => ListContexts -> [(SrcSpan, Annotated ())] -> m_axMk ()
+ Language.Haskell.GHC.ExactPrint.AnnotateTypes: withSortKeyContexts :: forall m_axNj. MonadFree AnnotationF m_axNj => ListContexts -> [(SrcSpan, Annotated ())] -> m_axNj ()
Files
- ChangeLog +2/−0
- ghc-exactprint.cabal +1/−1
- src/Language/Haskell/GHC/ExactPrint/Parsers.hs +10/−2
- tests/examples/ghc710/Ppr006a.hs +24/−0
ChangeLog view
@@ -1,3 +1,5 @@+2021-02-01 v0.6.3.4+ * Use env var to get ghc libdir by @jneira 2020-11-11 v0.6.3.3 * Sort comments properly, ignoring SrcSpan's file by @zliu41 2020-07-16 v0.6.3.2
ghc-exactprint.cabal view
@@ -1,5 +1,5 @@ name: ghc-exactprint-version: 0.6.3.3+version: 0.6.3.4 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
src/Language/Haskell/GHC/ExactPrint/Parsers.hs view
@@ -50,13 +50,17 @@ import Language.Haskell.GHC.ExactPrint.Preprocess import Language.Haskell.GHC.ExactPrint.Types +import Control.Exception (IOException, catch) import Control.Monad.RWS #if __GLASGOW_HASKELL__ > 806 import Data.Data (Data) #endif+import Data.Maybe (fromMaybe) import GHC.Paths (libdir) +import System.Environment (lookupEnv)+ import qualified ApiAnnotation as GHC import qualified DynFlags as GHC #if __GLASGOW_HASKELL__ > 808@@ -85,6 +89,7 @@ import qualified Data.Map as Map + {-# ANN module "HLint: ignore Eta reduce" #-} {-# ANN module "HLint: ignore Redundant do" #-} {-# ANN module "HLint: ignore Reduce duplication" #-}@@ -284,9 +289,12 @@ -- | Internal function. Default runner of GHC.Ghc action in IO. ghcWrapper :: GHC.Ghc a -> IO a-ghcWrapper =+ghcWrapper ghc = do+ let handler = return . const Nothing :: IOException -> IO (Maybe String)+ rtLibdir <- liftIO $ lookupEnv "GHC_EXACTPRINT_GHC_LIBDIR" `catch` handler+ let libdir' = fromMaybe libdir rtLibdir GHC.defaultErrorHandler GHC.defaultFatalMessager GHC.defaultFlushOut- . GHC.runGhc (Just libdir)+ . GHC.runGhc (Just libdir') $ ghc -- | Internal function. Exposed if you want to muck with DynFlags -- before parsing.
+ tests/examples/ghc710/Ppr006a.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE QuasiQuotes #-}+module Ppr006a where++commands :: [Command]+commands = [+ command "novisual" "cancel visual selection" $+ sendEventCurrent EvNoVisual++ -- insert a song right after the current song+ , command "insert" [help|+ inserts a song to the playlist. The song is inserted after the currently+ playing song.+ |] $ do+ st <- MPD.status+ case MPD.stSongPos st of+ Just n -> do+ -- there is a current song, insert after+ sendEventCurrent (EvInsert (n + 1))+ _ -> do+ -- there is no current song, just add+ sendEventCurrent EvAdd++ ]+