packages feed

haskell-tools-prettyprint 1.1.0.2 → 1.1.1.0

raw patch · 3 files changed

+31/−21 lines, 3 filesdep ~basedep ~containersdep ~ghc

Dependency ranges changed: base, containers, ghc

Files

Language/Haskell/Tools/PrettyPrint/Prepare/RangeTemplateToSourceTemplate.hs view
@@ -66,10 +66,14 @@                return (SourceTemplateList (RealSrcSpan rng) bef aft sep indented (Prelude.zip (Prelude.map ((:[]) . NormalText) own) (Prelude.map RealSrcSpan seps)) 0 Nothing))
      (\(RangeTemplateOpt rng bef aft) -> return (SourceTemplateOpt (RealSrcSpan rng) bef aft 0 Nothing)))
      (return ()) (return ())
-  where getTextFor RangeChildElem = return [ChildElem]
-        getTextFor (RangeElem rng) = do (src:rest) <- get
-                                        put rest
-                                        return [TextElem [NormalText src] (RealSrcSpan rng)]
+  where getTextFor :: RangeTemplateElem -> State [String] [SourceTemplateElem]
+        getTextFor RangeChildElem = return [ChildElem]
+        getTextFor (RangeElem rng) = do stack <- get
+                                        case stack of
+                                          (src:rest) -> do
+                                            put rest
+                                            return [TextElem [NormalText src] (RealSrcSpan rng)]
+                                          _ -> trfProblem "RangeTemplateToSourceTemplate.applyFragments.getTextFpr: stack is not right"
 
 -- | Marks template elements in the AST that should always be present in the source code, regardless of their
 -- containing elements being deleted.
Language/Haskell/Tools/PrettyPrint/Prepare/RangeToRangeTemplate.hs view
@@ -33,10 +33,13 @@         -- combine the current node with its children, and add it to the list of current nodes
         trf :: HasRange (x RngTemplateStage)
             => ([SrcSpan] -> x NormRangeStage -> x RngTemplateStage) -> x NormRangeStage -> State [[SrcSpan]] (x RngTemplateStage)
-        trf f ni = do (below : top : xs) <- get
-                      let res = f below ni
-                      put ([] : (top ++ [ getRange res ]) : xs)
-                      return res
+        trf f ni = do stack <- get
+                      case stack of 
+                        (below : top : xs) -> do
+                          let res = f below ni
+                          put ([] : (top ++ [ getRange res ]) : xs)
+                          return res
+                        _ -> trfProblem "RangeToRangeTemplate.cutUpRanges.trf: stack is not right"
 
 -- | Cuts out a list of source ranges from a given range
 cutOutElemSpan :: [SrcSpan] -> SpanInfo NormRangeStage -> SpanInfo RngTemplateStage
@@ -108,15 +111,18 @@ 
         trf :: HasRange (x NormRangeStage)
             => ([SrcSpan] -> x RangeStage -> x NormRangeStage) -> x RangeStage -> State [[SrcSpan]] (x NormRangeStage)
-        trf f ni = do (below : top : xs) <- get
-                      let res = f below ni
-                          resRange = getRange res
-                          endOfSiblings = srcSpanEnd (collectSpanRanges (srcSpanStart resRange) top)
-                          correctedRange = if endOfSiblings > srcSpanStart resRange
-                                             then mkSrcSpan endOfSiblings (max endOfSiblings (srcSpanEnd resRange))
-                                             else resRange
-                      put ([] : (top ++ [ correctedRange ]) : xs)
-                      return $ setRange correctedRange res
+        trf f ni = do stack <- get
+                      case stack of 
+                        (below : top : xs) -> do
+                          let res = f below ni
+                              resRange = getRange res
+                              endOfSiblings = srcSpanEnd (collectSpanRanges (srcSpanStart resRange) top)
+                              correctedRange = if endOfSiblings > srcSpanStart resRange
+                                                 then mkSrcSpan endOfSiblings (max endOfSiblings (srcSpanEnd resRange))
+                                                 else resRange
+                          put ([] : (top ++ [ correctedRange ]) : xs)
+                          return $ setRange correctedRange res
+                        _ -> trfProblem "RangeToRangeTemplate.fixRanges.trf: stack is not right"
 
 -- | Expand a simple node to contain its children
 expandToContain :: [SrcSpan] -> SpanInfo RangeStage -> SpanInfo NormRangeStage
haskell-tools-prettyprint.cabal view
@@ -1,5 +1,5 @@ name:                haskell-tools-prettyprint
-version:             1.1.0.2
+version:             1.1.1.0
 synopsis:            Pretty printing of Haskell-Tools AST
 description:         Converts the Haskell-Tools AST to text. Prepares the AST for this conversion. If the AST was created from the GHC AST this pretty printing will result in the original source code. Generated AST parts will get the default formatting. Works using the source annotations that are present in the AST. Creates a rose tree first to simplify the conversion.
 homepage:            https://github.com/haskell-tools/haskell-tools
@@ -22,13 +22,13 @@                      , Language.Haskell.Tools.PrettyPrint.Prepare.SourceTemplate
                      , Language.Haskell.Tools.PrettyPrint.Prepare.SourceTemplateHelpers
                      , Language.Haskell.Tools.PrettyPrint.Prepare.PlaceComments
-  build-depends:       base              >= 4.11  && < 4.12
+  build-depends:       base              >= 4.11  && < 4.13
                      , mtl               >= 2.2  && < 2.3
-                     , containers        >= 0.5  && < 0.6
+                     , containers        >= 0.5  && < 0.7
                      , references        >= 0.3  && < 0.4
                      , uniplate          >= 1.6  && < 1.7
                      , split             >= 0.2  && < 0.3
                      , text              >= 1.2  && < 1.3
-                     , ghc               >= 8.4  && < 8.5
+                     , ghc               >= 8.4  && < 8.7
                      , haskell-tools-ast >= 1.1  && < 1.2
   default-language: Haskell2010