summaryrefslogtreecommitdiff
path: root/devel/darcs/files/patch-Lcs.lhs
diff options
context:
space:
mode:
Diffstat (limited to 'devel/darcs/files/patch-Lcs.lhs')
-rw-r--r--devel/darcs/files/patch-Lcs.lhs56
1 files changed, 56 insertions, 0 deletions
diff --git a/devel/darcs/files/patch-Lcs.lhs b/devel/darcs/files/patch-Lcs.lhs
new file mode 100644
index 000000000000..aa7279e36b2f
--- /dev/null
+++ b/devel/darcs/files/patch-Lcs.lhs
@@ -0,0 +1,56 @@
+Tue Aug 15 19:41:27 EDT 2006 Esa Ilari Vuokko <ei@vuokko.info>
+ * Workaround for HasBounds that was removed in base-2.0 (GHC 6.6)
+diff -rN -u old-hsdarcs/Lcs.lhs new-hsdarcs-1/Lcs.lhs
+--- Lcs.lhs 2007-01-22 01:20:24.000000000 -0500
++++ Lcs.lhs 2007-01-22 01:20:25.000000000 -0500
+@@ -358,7 +358,8 @@
+ -- | goto next unchanged line, return the given line if unchanged
+ nextUnchanged :: BSTArray s -> Int -> ST s Int
+ nextUnchanged c i = do
+- if i == (aLen c) + 1 then return i
++ len <- aLenM c
++ if i == len + 1 then return i
+ else do b <- readArray c i
+ if b then nextUnchanged c (i+1)
+ else return i
+@@ -367,7 +368,8 @@
+ -- behind the last line
+ skipOneUnChanged :: BSTArray s -> Int -> ST s Int
+ skipOneUnChanged c i = do
+- if i == (aLen c) + 1 then return i
++ len <- aLenM c
++ if i == len + 1 then return i
+ else do b <- readArray c i
+ if not b then return (i+1)
+ else skipOneUnChanged c (i+1)
+@@ -381,8 +383,9 @@
+
+ -- | goto next changed line, return the given line if changed
+ nextChanged :: BSTArray s -> Int -> ST s (Maybe Int)
+-nextChanged c i =
+- if i <= aLen c
++nextChanged c i = do
++ len <- aLenM c
++ if i <= len
+ then do b <- readArray c i
+ if not b then nextChanged c (i+1)
+ else return $ Just i
+@@ -430,8 +433,17 @@
+ initP :: [PackedString] -> PArray
+ initP a = listArray (0, length a) (nilPS:a)
+
++#if __GLASGOW_HASKELL__ > 604
++aLen :: (IArray a e) => a Int e -> Int
++aLen a = snd $ bounds a
++aLenM :: (MArray a e m) => a Int e -> m Int
++aLenM a = getBounds a >>= return . snd
++#else
+ aLen :: HasBounds a => a Int e -> Int
+ aLen a = snd $ bounds a
++aLenM :: (HasBounds a, Monad m) => a Int e -> m Int
++aLenM = return . snd . bounds
++#endif
+ \end{code}
+
+ \begin{code}
+