packages feed

scion-browser 0.3.3 → 0.3.4

raw patch · 5 files changed

+133/−208 lines, 5 filesdep ~haskell-src-exts

Dependency ranges changed: haskell-src-exts

Files

scion-browser.cabal view
@@ -1,5 +1,5 @@ name:           scion-browser
-version:        0.3.3+version:        0.3.4 cabal-version:  >= 1.8
 build-type:     Simple
 license:        BSD3
@@ -25,7 +25,7 @@     text,
     parsec >= 3 && < 4,
     Cabal >= 0.10,
-    haskell-src-exts >= 1.11 && < 1.16,
+    haskell-src-exts >= 1.11 && < 1.17,
     process >= 1 && < 2,
     tar >= 0.3 && < 0.5,
     zlib == 0.5.*,
@@ -76,23 +76,22 @@     Scion.PersistentHoogle
     
   ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind -fno-warn-orphans
-  other-modules:   
-                   Scion.Packages,
-                   Scion.PersistentBrowser.DbTypes,
-                   Scion.PersistentBrowser.FileUtil,
-                   Scion.PersistentBrowser.FromMissingH,
-                   Scion.PersistentBrowser.Instances.Json,
-                   Scion.PersistentBrowser.Parser,
-                   Scion.PersistentBrowser.Parser.Documentable,
-                   Scion.PersistentBrowser.Parser.Internal,
-                   Scion.PersistentBrowser.TempFile,
-                   Scion.PersistentBrowser.ToDb,
-                   Scion.PersistentBrowser.Types,
-                   Scion.PersistentBrowser.Util,
-                   Scion.PersistentHoogle.Instances.Json,
-                   Scion.PersistentHoogle.Parser,
-                   Scion.PersistentHoogle.Types,
-                   Scion.PersistentHoogle.Util
+  other-modules:   +                   Scion.Packages,+                   Scion.PersistentBrowser.DbTypes,+                   Scion.PersistentBrowser.FileUtil,+                   Scion.PersistentBrowser.FromMissingH,+                   Scion.PersistentBrowser.Instances.Json,+                   Scion.PersistentBrowser.Parser,+                   Scion.PersistentBrowser.Parser.Internal,+                   Scion.PersistentBrowser.TempFile,+                   Scion.PersistentBrowser.ToDb,+                   Scion.PersistentBrowser.Types,+                   Scion.PersistentBrowser.Util,+                   Scion.PersistentHoogle.Instances.Json,+                   Scion.PersistentHoogle.Parser,+                   Scion.PersistentHoogle.Types,+                   Scion.PersistentHoogle.Util 
 executable scion-browser
   hs-source-dirs:  src
@@ -106,7 +105,7 @@     text,     parsec >= 3 && < 4,     Cabal >= 0.10,-    haskell-src-exts >= 1.11 && < 1.16,+    haskell-src-exts >= 1.11 && < 1.17,     process >= 1 && < 2,     tar >= 0.3 && < 0.5,     zlib == 0.5.*,@@ -152,90 +151,27 @@   --   extra-libraries:   tinfo
     
   ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind -fno-warn-orphans -threaded
-  other-modules:   
-                   Scion.Packages,
-                   Scion.PersistentBrowser,
-                   Scion.PersistentBrowser.Build,
-                   Scion.PersistentBrowser.DbTypes,
-                   Scion.PersistentBrowser.FileUtil,
-                   Scion.PersistentBrowser.FromMissingH,
-                   Scion.PersistentBrowser.Instances.Json,
-                   Scion.PersistentBrowser.Parser,
-                   Scion.PersistentBrowser.Parser.Documentable,
-                   Scion.PersistentBrowser.Parser.Internal,
-                   Scion.PersistentBrowser.Query,
-                   Scion.PersistentBrowser.TempFile,
-                   Scion.PersistentBrowser.ToDb,
-                   Scion.PersistentBrowser.Types,
-                   Scion.PersistentBrowser.Util,
-                   Scion.PersistentHoogle,
-                   Scion.PersistentHoogle.Instances.Json,
-                   Scion.PersistentHoogle.Parser,
-                   Scion.PersistentHoogle.Types,
-                   Scion.PersistentHoogle.Util,
-                   Server.PersistentCommands
-
---test-suite BrowserTests
---  main-is:         Test.hs
---  type:            exitcode-stdio-1.0
---  x-uses-tf:       true
---  ghc-options:     -Wall -rtsopts
---  hs-source-dirs:  src, test
---  other-modules:   Scion.Browser.Parser.Documentable, Scion.Browser.Parser.Internal, Scion.Browser.Parser, Scion.Browser.ParserTests, Scion.PersistentHoogle.Util
---  
---  build-depends:
---    HUnit             >= 1.2 && < 2,
---    QuickCheck        >= 2.4,
---    test-framework    >= 0.4.1,
---    test-framework-quickcheck2,
---    test-framework-hunit,
---    split,
---    haskeline         >= 0.6,
---    -- From library
---    attoparsec        >= 0.10,
---    base              == 4.*,
---    mtl               >= 2,
---    derive            >= 2.5 && < 3,
---    text              == 0.11.*,
---    parsec            >= 3 && < 4,
---    Cabal             >= 0.10, 
---    haskell-src-exts  >= 1.11 && < 2,
---    process           >= 1 && < 2,
---    tar               == 0.3.*,
---    zlib              == 0.5.*,
---    HTTP              >= 4000 && < 5000,
---    deepseq           >= 1.1 && < 2,
---    aeson             >= 0.4,
---    parallel-io       >= 0.3,
---    utf8-string       ,
---    persistent >= 0.7,
---    persistent-sqlite >= 0.7,
---    persistent-template >= 0.7,
---    conduit,
---    transformers,
---    unordered-containers >= 0.1.3,
---    zlib,
---    -- For Scion.packages (provisional)
---    ghc-paths         == 0.1.*
---  
---  if !os(mingw32)
---    build-depends:
---      unix            >= 2 && < 3
---  
---  if impl(ghc >= 7.0)
---    build-depends:
---      containers      >= 0.2 && < 0.5,
---      directory       == 1.1.*,
---      filepath        == 1.2.*,
---      bytestring,
---      -- For Scion.Packages (provisional)
---      ghc             >= 7
---  else
---    build-depends:
---      containers      >= 0.2 && < 0.4,
---      directory       == 1.0.*,
---      filepath        == 1.1.*,
---      bytestring,
+  other-modules:   +                   Scion.Packages,+                   Scion.PersistentBrowser,+                   Scion.PersistentBrowser.Build,+                   Scion.PersistentBrowser.DbTypes,+                   Scion.PersistentBrowser.FileUtil,+                   Scion.PersistentBrowser.FromMissingH,+                   Scion.PersistentBrowser.Instances.Json,+                   Scion.PersistentBrowser.Parser,+                   Scion.PersistentBrowser.Parser.Internal,+                   Scion.PersistentBrowser.Query,+                   Scion.PersistentBrowser.TempFile,+                   Scion.PersistentBrowser.ToDb,+                   Scion.PersistentBrowser.Types,+                   Scion.PersistentBrowser.Util,+                   Scion.PersistentHoogle,+                   Scion.PersistentHoogle.Instances.Json,+                   Scion.PersistentHoogle.Parser,+                   Scion.PersistentHoogle.Types,+                   Scion.PersistentHoogle.Util,+                   Server.PersistentCommands --      -- For Scion.Packages (provisional)
 
 
− src/Scion/PersistentBrowser/Parser/Documentable.hs
@@ -1,88 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, TypeSynonymInstances, FlexibleInstances #-}--module Scion.PersistentBrowser.Parser.Documentable where--import Scion.PersistentBrowser.Types-import qualified Language.Haskell.Exts.Syntax as S-import qualified Language.Haskell.Exts.Annotated.Syntax as A--class Documentable a b | a -> b where-  document :: Doc -> a -> (Documented b)--instance Documentable S.Type A.Type where-  document d (S.TyForall b c t) = A.TyForall d (fmap (fmap (document d)) b)-                                               (Just (document d c))-                                               (document d t)-  document d (S.TyFun t1 t2)    = A.TyFun d (document d t1)-                                            (document d t2)-  document d (S.TyTuple b t)    = A.TyTuple d (documentBoxed d b)-                                              (fmap (document d) t)-  document d (S.TyList t)       = A.TyList d (document d t)-  document d (S.TyApp t1 t2)    = A.TyApp d (document d t1)-                                            (document d t2)-  document d (S.TyVar n)        = A.TyVar d (document d n)-  document d (S.TyCon c)        = A.TyCon d (document d c)-  document d (S.TyParen t)      = A.TyParen d (document d t)-  document d (S.TyInfix l n r)  = A.TyInfix d (document d l)-                                              (document d n)-                                              (document d r)-  document d (S.TyKind t k)     = A.TyKind d (document d t)-                                             (document d k)--instance Documentable S.TyVarBind A.TyVarBind where-  document d (S.KindedVar n k) = A.KindedVar d (document d n)-                                               (document d k)-  document d (S.UnkindedVar n) = A.UnkindedVar d (document d n)--instance Documentable S.Context A.Context where-  document d [a] = A.CxSingle d (document d a)-  document d v   = A.CxTuple d (fmap (document d) v)--instance Documentable S.Asst A.Asst where-  document d (S.ClassA q t)   = A.ClassA d (document d q)-                                           (fmap (document d) t)-  document d (S.InfixA l q r) = A.InfixA d (document d l)-                                           (document d q)-                                           (document d r)-  document d (S.IParam n t)   = A.IParam d (document d n)-                                           (document d t)-  document d (S.EqualP t1 t2) = A.EqualP d (document d t1)-                                           (document d t2)--instance Documentable S.Name A.Name where-  document d (S.Ident s)  = A.Ident d s-  document d (S.Symbol s) = A.Symbol d s--instance Documentable S.QName A.QName where-  document d (S.Qual mn n) = A.Qual d (document d mn)-                                      (document d n)-  document d (S.UnQual n)  = A.UnQual d (document d n)-  document d (S.Special c) = A.Special d (document d c)--instance Documentable S.ModuleName A.ModuleName where-  document d (S.ModuleName n) = A.ModuleName d n--instance Documentable S.IPName A.IPName where-  document d (S.IPDup s) = A.IPDup d s-  document d (S.IPLin s) = A.IPLin d s--instance Documentable S.SpecialCon A.SpecialCon where-  document d S.UnitCon          = A.UnitCon d-  document d S.ListCon          = A.ListCon d-  document d S.FunCon           = A.FunCon d-  document d (S.TupleCon b n)   = A.TupleCon d (documentBoxed d b) n-  document d S.Cons             = A.Cons d-  document d S.UnboxedSingleCon = A.UnboxedSingleCon d--instance Documentable S.Kind A.Kind where-  document d S.KindStar       = A.KindStar d-  document d S.KindBang       = A.KindBang d-  document d (S.KindFn k1 k2) = A.KindFn d (document d k1)-                                           (document d k2)-  document d (S.KindParen k)  = A.KindParen d (document d k)-  document d (S.KindVar n)    = A.KindVar d (document d n)--documentBoxed :: Doc -> S.Boxed -> A.Boxed-documentBoxed _ S.Boxed   = A.Boxed-documentBoxed _ S.Unboxed = A.Unboxed-
src/Scion/PersistentBrowser/Parser/Internal.hs view
@@ -10,10 +10,10 @@ import Distribution.Version
 import Language.Haskell.Exts.Annotated.Syntax
 import Language.Haskell.Exts.Extension
-import qualified Language.Haskell.Exts.Parser as Parser
+import qualified Language.Haskell.Exts.Annotated as Parser
 import Scion.PersistentBrowser.Types
 import Scion.PersistentBrowser.FromMissingH (replace)
-import Scion.PersistentBrowser.Parser.Documentable
+-- import Scion.PersistentBrowser.Parser.Documentable
 import Text.Parsec.String as BS
 import Text.Parsec.Char
 import Text.Parsec.Combinator
@@ -90,7 +90,7 @@ 
 getModuleName :: Documented Module -> String
 getModuleName (Module _ (Just (ModuleHead _ (ModuleName _ name) _ _)) _ _ _) = name
-getModuleName _ = error "This should never happen"
+getModuleName _ = error "getModuleName: This should never happen: a module with no name"
 
 decl :: Doc -> BSParser [Documented Decl]
 decl doc =  choice [ listed $ function doc
@@ -131,7 +131,7 @@                     parsed = Parser.parseTypeWithMode parseTypeMode noHashString
                  in case parsed of
                       Parser.ParseFailed _ _ -> TyVar NoDoc (Ident NoDoc "not parsed")
-                      Parser.ParseOk ty -> mapOnNames (theInverseReplacements . generateInverseLatinReplacements nonAsciiChars) (document NoDoc ty)
+                      Parser.ParseOk ty -> mapOnNames (theInverseReplacements . generateInverseLatinReplacements nonAsciiChars) (fmap (const NoDoc) ty)
 
 theReplacements :: String -> String
 theReplacements = (replace "#" "__HASH__") . (replace "[:" "__GHC_ARR_OPEN__") . (replace ":]" "__GHC_ARR_CLOSE__") . (replace "!" "BANG__")
@@ -173,6 +173,7 @@ mapOnNames f (TyParen doc ty) = TyParen doc (mapOnNames f ty)
 mapOnNames f (TyInfix doc t1 name t2) = TyInfix doc (mapOnNames f t1) (mapOnNamesQName f name) (mapOnNames f t2)
 mapOnNames f (TyKind doc ty k) = TyKind doc (mapOnNames f ty) k
+mapOnNames _ r = r
 
 mapOnNamesTyVar :: (String -> String) -> Documented TyVarBind -> Documented TyVarBind
 mapOnNamesTyVar f (KindedVar doc name k) = KindedVar doc (mapOnNamesName f name) k
@@ -190,7 +191,9 @@ mapOnNamesContext :: (String -> String) -> Documented Context -> Documented Context
 mapOnNamesContext f (CxSingle doc asst) = CxSingle doc (mapOnNamesAsst f asst)
 mapOnNamesContext f (CxTuple doc assts) = CxTuple doc (fmap (mapOnNamesAsst f) assts)
+#if !MIN_VERSION_haskell_src_exts(1,16,0) 
 mapOnNamesContext f (CxParen doc ctx)   = CxParen doc (mapOnNamesContext f ctx)         
+#endif
 mapOnNamesContext _ (CxEmpty doc)       = CxEmpty doc
 
 mapOnNamesAsst :: (String -> String) -> Documented Asst -> Documented Asst
@@ -198,6 +201,7 @@ mapOnNamesAsst f (InfixA doc ty1 name ty2) = InfixA doc (mapOnNames f ty1) (mapOnNamesQName f name) (mapOnNames f ty2)
 mapOnNamesAsst f (IParam doc name ty) = IParam doc (mapOnNamesIPName f name) (mapOnNames f ty)
 mapOnNamesAsst f (EqualP doc ty1 ty2) = EqualP doc (mapOnNames f ty1) (mapOnNames f ty2)
+mapOnNamesAsst _ r = r
 
 mapOnNamesIPName :: (String -> String) -> Documented IPName -> Documented IPName
 mapOnNamesIPName f (IPDup doc s) = IPDup doc (f s)
@@ -231,7 +235,11 @@ 
 constructor :: Doc -> BSParser (Documented GadtDecl)
 constructor doc = do (names, ty) <- functionLike conid
+#if MIN_VERSION_haskell_src_exts(1,16,0) 
+                     return $ GadtDecl doc (head names) Nothing ty
+#else
                      return $ GadtDecl doc (head names) ty
+#endif
 
 constructorOrFunction :: Doc -> BSParser (Either (Documented Decl) (Documented GadtDecl))
 constructorOrFunction doc = do f <- function doc
@@ -290,8 +298,13 @@                    let (ctx, ty) = getContextAndType ty'
                        (qhead:params) = lineariseType ty
                    case qhead of
+#if MIN_VERSION_haskell_src_exts(1,16,0) 
+                     TyCon _ qname -> return $ InstDecl doc Nothing (IRule NoDoc Nothing ctx (IHCon NoDoc qname)) Nothing
+                     _             -> return $ InstDecl doc Nothing (IRule NoDoc Nothing ctx (IHCon NoDoc (UnQual NoDoc (Ident NoDoc "#unparsed#")))) Nothing
+#else                   
                      TyCon _ qname -> return $ InstDecl doc ctx (IHead NoDoc qname params) Nothing
                      _             -> return $ InstDecl doc ctx (IHead NoDoc (UnQual NoDoc (Ident NoDoc "#unparsed#")) params) Nothing
+#endif
 
 type_ :: Doc -> BSParser (Documented Decl)
 type_ doc = do string "type"
@@ -303,7 +316,12 @@                spaces0
                rest <- restOfLine
                ty <- parseType rest
+#if MIN_VERSION_haskell_src_exts(1,16,0) 
+               let h = foldl (\h1 tv -> DHApp NoDoc h1 tv) (DHead NoDoc con) vars
+               return $ TypeDecl doc h ty
+#else
                return $ TypeDecl doc (DHead NoDoc con vars) ty
+#endif
 
 tyVarBind :: BSParser (Documented TyVarBind)
 tyVarBind = (do char '('
@@ -549,8 +567,13 @@                                 ((TyCon _ (Qual _ _ name')):params) -> (name', toKindedVars params) 
                                 ((TyCon _ (Special l _)):params)    -> (Symbol l "", toKindedVars params)
                                 (_:params)                          -> (Ident NoDoc "#unparsed#", toKindedVars params)
-                                []                                  -> error "This should never happen"
+                                []                                  -> error $ "typeToContextAndHead: This should never happen: " ++ (show $ lineariseType ty)
+#if MIN_VERSION_haskell_src_exts(1,16,0) 
+                             h = foldl (\h1 tv -> DHApp NoDoc h1 tv) (DHead NoDoc name) vars
+                         in  (ctx, h)
+#else
                          in  (ctx, DHead NoDoc name vars)
+#endif
 
 toKindedVars :: [Type Doc] -> [TyVarBind Doc]
 toKindedVars []         = []
@@ -558,5 +581,7 @@   (UnkindedVar d (Ident NoDoc $ n1 ++ "[" ++ n2 ++ "]")) : toKindedVars xs
 toKindedVars ((TyVar d n):xs)       = (UnkindedVar d n) : toKindedVars xs
 toKindedVars ((TyParen _ inner):xs) = toKindedVars (inner:xs)
-toKindedVars (x:_)                  = error $ show x
+toKindedVars ((TyApp _ t _):xs) = toKindedVars [t] ++ toKindedVars xs
+-- TyApp NoDoc (TyApp NoDoc (TyVar NoDoc (Ident NoDoc "l_a5YI")) (TyCon NoDoc (UnQual NoDoc (Ident NoDoc "Z")))) (TyCon NoDoc (UnQual NoDoc (Ident NoDoc "Z")))
+toKindedVars _                  = [] -- error $ show x
 
src/Scion/PersistentBrowser/ToDb.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE RankNTypes, KindSignatures #-}+{-# LANGUAGE RankNTypes, KindSignatures, CPP #-} module Scion.PersistentBrowser.ToDb where +import Data.Maybe (maybeToList) import qualified Data.Map as M import qualified Data.Text as T import Data.Version (showVersion)@@ -8,6 +9,7 @@ import Distribution.Package hiding (Package) import Language.Haskell.Exts.Annotated.Syntax hiding (String) import Language.Haskell.Exts.Pretty+import Language.Haskell.Exts.SrcLoc import Scion.PersistentBrowser.DbTypes import Scion.PersistentBrowser.Types @@ -23,7 +25,7 @@ saveModuleToDb pkgId (Module doc (Just (ModuleHead _ (ModuleName _ name)_ _)) _ _ decls) =   do moduleId <- insert $ DbModule name (docToString doc) pkgId      mapM_ (saveDeclToDb moduleId) decls-saveModuleToDb _ _ = error "This should never happen"+saveModuleToDb _ m = error $ "saveModuleToDb: This should never happen" ++ (show m)  -- saveDeclToDb :: PersistBackend backend m => DbModuleId -> Documented Decl -> backend m () -- Datatypes@@ -51,8 +53,14 @@      mapM_ (saveContextToDb declId) (contextToDb (maybeEmptyContext ctx))      mapM_ (saveFunDepToDb declId) (map singleLinePrettyPrint fdeps) -- Instances+#if MIN_VERSION_haskell_src_exts(1,16,0) +saveDeclToDb moduleId (InstDecl doc _ hd _) =+  do let (declName, declVars) = instRuleToDb hd+         ctx = Nothing+#else saveDeclToDb moduleId (InstDecl doc ctx hd _) =   do let (declName, declVars) = instHeadToDb hd+#endif      declId <- insert $ DbDecl DbInstance declName (docToString doc)                                Nothing Nothing Nothing moduleId      mapM_ (saveTyVarToDb declId) declVars@@ -70,7 +78,7 @@                                Nothing Nothing (Just (singleLinePrettyPrint ty)) moduleId      mapM_ (saveTyVarToDb declId) declVars -- Other-saveDeclToDb _ _ = error "This should never happen"+saveDeclToDb _ t = error $ "saveDeclToDb: This should never happen" ++ (show t)  -- saveTyVarToDb :: PersistBackend backend m => DbDeclId -> String -> backend m () saveTyVarToDb declId var = insert $ DbTyVar var declId@@ -82,8 +90,11 @@ saveContextToDb declId ctx = insert $ DbContext ctx declId  -- saveConstructorToDb :: PersistBackend backend m => DbDeclId -> Documented GadtDecl -> backend m ()+#if MIN_VERSION_haskell_src_exts(1,16,0) +saveConstructorToDb declId (GadtDecl _ name _ ty) = insert $ DbConstructor (getNameString name) (singleLinePrettyPrint ty) declId+#else saveConstructorToDb declId (GadtDecl _ name ty) = insert $ DbConstructor (getNameString name) (singleLinePrettyPrint ty) declId-+#endif -- DELETE PACKAGE FROM DATABASE -- ============================ @@ -120,14 +131,38 @@ docToString NoDoc     = Nothing docToString (Doc doc) = Just (T.unpack doc) -declHeadToDb :: DeclHead l -> (String, [String])+declHeadToDb :: (Show l) => DeclHead l -> (String, [String])+#if MIN_VERSION_haskell_src_exts(1,16,0) +declHeadToDb (DHead _ name) = (getNameString name, [])+declHeadToDb (DHApp _ h _) = declHeadToDb h+#else declHeadToDb (DHead _ name vars) = (getNameString name, map singleLinePrettyPrint vars)-declHeadToDb _ = error "This should never happen"+#endif+declHeadToDb h = error $ "declHeadToDb: This should never happen" ++ (show h) -instHeadToDb :: InstHead l -> (String, [String])+#if MIN_VERSION_haskell_src_exts(1,16,0) +instRuleToDb :: (Show l) => InstRule l -> (String, [String])+instRuleToDb (IRule _ mt _ (IHCon _ name )) = (getQNameString name, map singleLinePrettyPrint $ concat $ maybeToList mt)+instRuleToDb r = error $ "instRuleToDb: This should never happen" ++ (show r)+#endif++instHeadToDb :: (Show l) => InstHead l -> (String, [String])+#if MIN_VERSION_haskell_src_exts(1,16,0) +instHeadToDb (IHCon _ name) = (getQNameString name, [])+#else instHeadToDb (IHead _ name vars) = (getQNameString name, map singleLinePrettyPrint vars)-instHeadToDb _ = error "This should never happen"+#endif+instHeadToDb h = error $ "instHeadToDb: This should never happen" ++ (show h) +#if MIN_VERSION_haskell_src_exts(1,16,0) +instance SrcInfo Doc where+  toSrcInfo _ _ _ = NoDoc+  fromSrcInfo _ = NoDoc+  fileName = const "<unknown"+  startLine = const 0+  startColumn = const 0+#endif+ singleLinePrettyPrint :: Pretty a => a -> String singleLinePrettyPrint = prettyPrintWithMode $ defaultMode { layout = PPNoLayout } @@ -135,9 +170,15 @@ maybeEmptyContext Nothing    = CxEmpty NoDoc maybeEmptyContext (Just ctx) = ctx +#if MIN_VERSION_haskell_src_exts(1,16,0) +contextToDb :: (SrcInfo l) => Context l -> [String]+#else contextToDb :: Context l -> [String]+#endif contextToDb (CxSingle _ a)  = [ singleLinePrettyPrint a ] contextToDb (CxTuple _ as)  = map singleLinePrettyPrint as+#if !MIN_VERSION_haskell_src_exts(1,16,0)  contextToDb (CxParen _ ctx) = contextToDb ctx+#endif contextToDb (CxEmpty _)     = [] 
src/Scion/PersistentBrowser/Types.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE QuasiQuotes, TemplateHaskell,MultiParamTypeClasses, FunctionalDependencies #-}+{-# LANGUAGE QuasiQuotes, TemplateHaskell,MultiParamTypeClasses, FunctionalDependencies, CPP #-}  module Scion.PersistentBrowser.Types where @@ -80,10 +80,18 @@   getChildren _                      = []  instance Named Decl where++#if MIN_VERSION_haskell_src_exts(1,16,0) +  getName (TypeDecl _ (DHead _ name) _)          = getNameString name+  getName (GDataDecl _ _ _ (DHead _ name) _ _ _) = getNameString name+  getName (ClassDecl _ _ (DHead _ name) _ _)     = getNameString name+  getName (InstDecl _ _ (IRule _ _ _ (IHCon _ name )) _)        = getQNameString name+#else     getName (TypeDecl _ (DHead _ name _) _)          = getNameString name   getName (GDataDecl _ _ _ (DHead _ name _) _ _ _) = getNameString name   getName (ClassDecl _ _ (DHead _ name _) _ _)     = getNameString name   getName (InstDecl _ _ (IHead _ name _) _)        = getQNameString name+#endif     getName (TypeSig _ name _)                       = concat $ intersperse "," $ map getNameString name   getName v                                        = error $ "This should not be possible: " ++ show v @@ -92,5 +100,8 @@   getChildren _                            = []  instance Named GadtDecl where+#if MIN_VERSION_haskell_src_exts(1,16,0) +  getName (GadtDecl _ name _ _) = getNameString name+#else   getName (GadtDecl _ name _) = getNameString name-+#endif