summaryrefslogtreecommitdiff
blob: 06be29a8131bc22b232c37966e3fc00db1742198 (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
diff --git a/Lens/Family/THCore.hs b/Lens/Family/THCore.hs
index d4f2740..2f53db6 100644
--- a/Lens/Family/THCore.hs
+++ b/Lens/Family/THCore.hs
@@ -1 +1,2 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TemplateHaskell #-}
@@ -52,4 +53,9 @@ extractLensTypeInfo datatype = do
   return $ case i of
+#if MIN_VERSION_template_haskell(2,11,0)
+    TyConI (DataD    _ n ts _ _ _) -> (n, ts)
+    TyConI (NewtypeD _ n ts _ _ _) -> (n, ts)
+#else
     TyConI (DataD    _ n ts _ _) -> (n, ts)
     TyConI (NewtypeD _ n ts _ _) -> (n, ts)
+#endif
     _ -> error $ "Can't derive Lens for: "  ++ datatypeStr
@@ -63,2 +69,8 @@ extractConstructorFields datatype = do
   return $ case i of
+#if MIN_VERSION_template_haskell(2,11,0)
+    TyConI (DataD    _ _ _ _ [RecC _ fs] _) -> fs
+    TyConI (NewtypeD _ _ _ _ (RecC _ fs) _) -> fs
+    TyConI (DataD    _ _ _ _ [_]         _) ->
+      error $ "Can't derive Lens without record selectors: " ++ datatypeStr
+#else
     TyConI (DataD    _ _ _ [RecC _ fs] _) -> fs
@@ -67,2 +79,3 @@ extractConstructorFields datatype = do
       error $ "Can't derive Lens without record selectors: " ++ datatypeStr
+#endif
     TyConI NewtypeD{} ->
@@ -134,4 +147,9 @@ extractConstructorInfo datatype = do
   return $ case i of
+#if MIN_VERSION_template_haskell(2,11,0)
+    TyConI (DataD    _ _ _ _ fs _) -> fs
+    TyConI (NewtypeD _ _ _ _ f  _) -> [f]
+#else
     TyConI (DataD    _ _ _ fs _) -> fs
     TyConI (NewtypeD _ _ _ f  _) -> [f]
+#endif
     _ -> error $ "Can't derive traversal for: " ++ datatypeStr