summaryrefslogtreecommitdiff
path: root/dev-haskell/th-utilities/files/th-utilities-0.2.3.0-ghc-8.8.patch
blob: 8a3795430b1f96594de146ded156eab19e5477dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
commit 5e510f6a6ed24b98d143e5baeb156a8901bf3faa
Author: Ryan Scott <ryan.gl.scott@gmail.com>
Date:   Mon Dec 10 15:12:47 2018 -0500

    Allow building with template-haskell-2.15.0.0

diff --git a/src/TH/ReifySimple.hs b/src/TH/ReifySimple.hs
index d179829..70b929e 100644
--- a/src/TH/ReifySimple.hs
+++ b/src/TH/ReifySimple.hs
@@ -233,18 +233,24 @@ infoToDataFamily info = case info of
         Just $ DataFamily name (map tyVarBndrName tvs) (map go insts)
     _ -> Nothing
   where
-#if MIN_VERSION_template_haskell(2,11,0)
-    go (NewtypeInstD preds name params _kind con _deriving) =
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (NewtypeInstD preds _ lhs _kind con _deriving)
+      | ConT name:params <- unAppsT lhs
+#elif MIN_VERSION_template_haskell(2,11,0)
+    go (NewtypeInstD preds name params _kind con _deriving)
 #else
-    go (NewtypeInstD preds name params       con _deriving) =
+    go (NewtypeInstD preds name params       con _deriving)
 #endif
-        DataInst name preds params (conToDataCons con)
-#if MIN_VERSION_template_haskell(2,11,0)
-    go (DataInstD preds name params _kind cons _deriving) =
+      = DataInst name preds params (conToDataCons con)
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (DataInstD preds _ lhs _kind cons _deriving)
+      | ConT name:params <- unAppsT lhs
+#elif MIN_VERSION_template_haskell(2,11,0)
+    go (DataInstD preds name params _kind cons _deriving)
 #else
-    go (DataInstD preds name params       cons _deriving) =
+    go (DataInstD preds name params       cons _deriving)
 #endif
-        DataInst name preds params (concatMap conToDataCons cons)
+      = DataInst name preds params (concatMap conToDataCons cons)
     go info' = error $
         "Unexpected instance in FamilyI in infoToDataInsts:\n" ++ pprint info'
 
@@ -263,8 +269,23 @@ infoToTypeFamily info = case info of
 #endif
     _ -> Nothing
   where
+#if MIN_VERSION_template_haskell(2,15,0)
+    goEqn _ (TySynEqn _ lhs ty)
+      | ConT name:params <- unAppsT lhs
+      = TypeInst name params ty
+      | otherwise
+      = error $ "Unexpected type family instance head: " ++ pprint lhs
+#else
     goEqn name (TySynEqn params ty) = TypeInst name params ty
+#endif
+
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (TySynInstD (TySynEqn _ lhs ty))
+      | ConT name:params <- unAppsT lhs
+      = TypeInst name params ty
+#else
     go (TySynInstD name (TySynEqn params ty)) = TypeInst name params ty
+#endif
     go info' = error $
         "Unexpected instance in FamilyI in infoToTypeInsts:\n" ++ pprint info'