As the interface of the TH code for generating lenses changed twice in 4.*, we need to differentiate between versions accordingly.
Signed-off-by: Petr Pudlak <[email protected]> --- src/Ganeti/Lens.hs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Ganeti/Lens.hs b/src/Ganeti/Lens.hs index 9443309..0c006d0 100644 --- a/src/Ganeti/Lens.hs +++ b/src/Ganeti/Lens.hs @@ -72,8 +72,19 @@ makeCustomLensesFiltered :: (String -> Bool) -> Name -> Q [Dec] makeCustomLensesFiltered f = makeLensesWith customRules where customRules :: LensRules - customRules = set lensField (fmap lensFieldName . mfilter f . Just) - defaultRules + customRules = set lensField nameFun lensRules +#if MIN_VERSION_lens(4,5,0) + nameFun :: Name -> [Name] -> Name -> [DefName] + nameFun _ _ = liftM (TopName . mkName) . nameFilter . nameBase +#elif MIN_VERSION_lens(4,4,0) + nameFun :: [Name] -> Name -> [DefName] + nameFun _ = liftM (TopName . mkName) . nameFilter . nameBase +#else + nameFun :: String -> Maybe String + nameFun = nameFilter +#endif + nameFilter :: (MonadPlus m) => String -> m String + nameFilter = liftM lensFieldName . mfilter f . return -- | Create lenses for all fields of a given data type. makeCustomLenses :: Name -> Q [Dec] -- 2.2.0.rc0.207.ga3a616c
